使用的变量,全局的还是局部的?

Variable used, golobal or local?

我收到一条消息'local variable referenced before assignment'

使用外部变量成功,但赋值失败

x = 10
y = 10

def some():

    print(x)

some()

10
x = 10
y = 10
def some():
    x = 100-x+x
    print(x)
some()

local variable 'x' referenced before assignment
x = 10
y = 10
def some():
    t=100-x
    print(t)
some()

90
x = 10
y = 10
def some():
    t=100-x
    x=t
    print(t)
some()

local variable 'x' referenced before assignment

有什么区别?预期结果应该相同,但在第二个样本中失败了。

这是否意味着我只能从 'x' 读取,而不能写入 'x'?

当您在函数内声明一个变量时,它会隐藏外部作用域中具有相同名称的变量。一旦你在函数内部声明了 x 它将成为函数中所有命令的 x 变量,甚至在 x = 10.

的外部作用域赋值之前

如果你想在外部范围内写入x变量,你应该将其声明为global x,即

x = 10
y = 10
def some():
    global x
    x = 100-x+x
    print(x)
some()

100