python - 打印全局变量时Python中的UnBoundLocalError

标签 python

这个问题在这里已经有了答案:





Don't understand why UnboundLocalError occurs (closure) [duplicate]

(8 个回答)


4年前关闭。




为什么这段代码会给出“UnboundLocalError: local variable 'num1' referenced before assignment”错误?

num1=50
def func():
   print(num1)
   num1=100
func()

最佳答案

另一个问题! python 。这是因为提升和可变阴影。如果在特定范围内有同名的局部变量和全局变量,则局部变量将遮蔽全局变量。此外,声明被提升到其范围的顶部。

因此,您的原始代码将如下所示:

num1=50
def func():
   num1 = ... # no value assigned
   print(num1)
   num1=100
func()

现在,如果您尝试打印 num1在没有为其分配任何值的情况下,它会抛出 UnboundLocalError因为在您尝试取消引用它时,您没有将任何值绑定(bind)到变量。

要解决此问题,您需要添加 global表示 num1 的关键字是全局变量而不是局部变量。
num1=50
def func():
   global num1
   print(num1)
   num1=100
func()

关于python - 打印全局变量时Python中的UnBoundLocalError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54508391/

相关文章:

python - 如何将 @retry 与关键字参数一起使用并传递函数

python - 使用 python 从表存储中检索超过 1000 行

python - 在 Python 中将分层 pandas DatetimeIndex 保存到 hdf5 时丢失时区感知

python - Keras 的 fit_generator() 用于二元分类预测始终为 50%

python - Razorpay Webhook 签名验证错误

python - 返回带有一定百分比的随机等级

python - 捕获所有异常的缺点(在最高程序级别,然后重新引发,只是在退出之前记录?)

python - 类型错误 : can't use a string pattern on a bytes-like object, 接口(interface)

python - Python 中有写入 MySQL 数据库的权限吗?

python - Networkx 永远不会完成 200 万个节点的介数中心性计算