使用的变量,全局的还是局部的?
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
我收到一条消息'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