关于变量作用域,运行结果和教材不一样。请教大家。
python作用域 优先顺序
加载变量的优先级顺序依次是:python内置作用域>当前模块中的全局(文件从上而下读取)>外层作用域>局部作用域。
下面例子:
教材标识 结果为 10 (上层函数变量的结果)
我运行的结果为 2 (全局变量的结果)(python 3.7.6)
first1 = 2 # 全局变量
def in_numbers():
second = 20 # 嵌套的局部变量
print(first1)
def numbers():
first1=10 # 局部变量
in_numbers()
numbers()
请问大家,这个例子中按优先顺序,print结果应该是上层变量结果10,可为什么显示全局结果2 呢?
结果就为10,你都知道了定义的first1为局部变量,那调用的first1当然是in_numbers函数调用的first1呀,而这个first1是先前你在函数外部定义的。
如果想用全局变量的话,在函数内部需要加上global哦,才能改变