You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数内先删除再重建全局变量为何未报错且可外部访问?

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:05:30