首页 > 编程知识 正文

定义全局变量的关键字,全局变量的定义不可能在

时间:2023-05-04 00:24:59 阅读:201651 作者:2991

评论区还有问题

你们是不是对 global 有什么误解The

global 的生效范围是有限的

你在 test2 里使用 global ,那么只在test2里生效,退出函数一切恢复原样

emmmmm,很经典的问题

先给出官方的解释

首先说 = 在 Python 中被称为 assignment 。如果当前本地空间不存在这个变量名,那么会在本地空间注册这个变量名,并把值和变量名绑定。如果原本存在这个变量名,那么会进行重新绑定。

好了,给你一段代码

tt = "1"

def abc():

tt = 2

print(tt)

abc()

这代码应该输出 2 为什么?

很简单,首先 assignment 的操作在本地注册了一个新的变量,与 global 同名。这样按照 LEGB 的查找规则,在一层查找到后不会继续向上查询

所以你得问题很简单了

在 test1 函数中执行了 tt="2"后,本地有这个变量了,于是后面 print 出来就是本地变量的值。

最后输出结果就是 123

Reference:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。