第二十讲有大佬吗?
def outside():var = 5
def inside():
var = 3
print(var)
inside()
outside()
def outside():
var = 5
def inside():
print(var)
var = 3
inside()
outside()
都改变了全局变量,为什么第二个会报错 本帖最后由 兰竹皋 于 2020-11-18 17:19 编辑
在Python中,不可在同一个函数中既调用全局变量又创建同名变量。(除非改变全局的值)
你第一个例子中,改变了变量,相当于重新创建了一个新的变量(和全局就没关系了)
而第二个例子中,你先调用了全局变量(此时,就不可以在创建重名变量),而你后来又创建了一个变量,所以错误 本帖最后由 jackz007 于 2020-11-18 18:03 编辑
def outside():
var = 5
def inside():
var = 3 # 赋值意味着定义 var 为局部变量,从此,与外部同名变量无关
print(var) # 打印局部变量 var 的数值
inside()
outside()
def outside():
var = 5
def inside():
print(var) # 函数内未定义先访问,这就意味着,var 被识别为一个外部(全局)变量
var = 3 # var 事先未经过 nonlocal 或 global 声明,所以,变量只读,不可赋值。
inside()
outside()
页:
[1]