函数内先删除再重建全局变量为何未报错且可外部访问?
关于Python中
global与del的行为解释 先看你给出的代码:
x = 2 def foo(): global x del x x = 3 foo() print(x)
输出是3,你的疑惑核心在于对global声明的作用范围理解偏差,具体纠正如下:
global x的作用是把整个函数内部对x的所有操作,全部绑定到全局作用域的x上,这个声明的效力覆盖函数内的全部代码,不是只到del x就失效。del x确实删除了全局作用域中的x变量名,但因为有global声明兜底,后续的x=3依然是在全局作用域重新创建x并赋值为3,而非创建局部变量。- 要是没写
global x,函数里直接del x会报错(局部作用域找不到x),但有了这个声明,所有x相关操作都指向全局,哪怕中间删了变量,后续赋值还是操作全局的x。
一句话总结:global一锤定音,函数里所有x的操作都归全局管,删了再赋值依然是全局变量。
内容的提问来源于stack exchange,提问作者medium-dimensional
相关产品推荐
相关产品推荐

