一、Python变量作用域问题
time = 0 #-----全局变量
def insert_time(min):
time = time + min #----局部变量
return time
print(insert_time(2))
print(insert_time(10))
UnboundLocalError: local variable 'time' referenced before assignment
time为全局变量,函数中使用了该同名变量,且更改了该变量的值,导致代码在运行时,分不清time是全局变量还是局部变量,认为全局变量的话,函数体内部对全局变量进行了更改,认为是局部变量,函数体内部又没有对该变量进行定义就直接引用了
针对这样的问题,引入全局变量global和局部变量nonlocal
time = 0 #-----全局变量
def insert_time(min):
global time
time = time + min #----局部变量
return time
print(insert_time(2))
print(insert_time(10))
print(time)
》》2 12
但是,全局变量global的使用存在弊端:全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。
time = 0 #-----全局变量
def insert_time(min):
nonlocal time
time = time + min #----局部变量
return time
print(insert_time(2))
print(insert_time(10))
print(time)
报错:SyntaxError: no binding for nonlocal 'time' found
函数中使用nonlocal定义time为局部变量,nonlocal关键字

最低0.47元/天 解锁文章
292





