Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python local variables statically determined?

Tags:

python

static

Python tutorial says that (https://docs.python.org/3/tutorial/classes.html#python-scopes-and-namespaces)

In fact, local variables are already determined statically.

How to understand this? Based on what I knew static means that the type of a variable is determined at compile time. But it is not true considering for example

x = 1
x = 'str'

where the variable x is dynamically bound to objects of type int or string at runtime.

Reference: Is Python strongly typed?

like image 992
S Wang Avatar asked Feb 17 '26 11:02

S Wang


1 Answers

In addition to the other answer, consider the error produced by the following code.

x = 1

def function():
    y = x + 1
    x = 3

function()

This will produce an error like "UnboundLocalError: local variable 'x' referenced before assignment" because it is determined that x is a local variable in function so it should be found in the local scope, negating the global definition.

like image 54
Jared Goguen Avatar answered Feb 20 '26 02:02

Jared Goguen