python - “定义”和“分配”有什么区别?
问题描述
我感到困惑...
为什么他们有不同的错误?
还是喜欢 JavaScript?
print(val1) #NameError: name 'val1' is not defined
val1 = 20
def foo1():
print(val2) # NameError: name 'val2' is not defined
foo1()
def foo2():
print(val3) # UnboundLocalError: local variable 'val3' referenced before assignment
val3 = 20
foo2()
解决方案
因为最后一个对函数范围内的值进行了赋值,并且 python 检测到您在调用print
.
在第二种情况下,python 找不到任何定义,在第一种情况下,当您在全局范围内分配一个值时,它无法解析该值是否为前一个值val
(因为它不在本地范围内)。
推荐阅读
- php - 如何在 wp cron 函数中使用 woocommerce 新的 CRUD setter 和 getter 方法?
- php - PHP Singleton 设计 PDO
- xamarin - Xamarin Zebra Sdk - 蓝牙打印“读取失败,套接字可能关闭或超时,读取 ret:-1”
- android - Spinner 按对象 ID 选择项目
- azure - 连接数据库的问题
- image-processing - 匹配同一图像中的线条
- python - 我应该在控制台游戏中使用单例吗?
- php - 如何在弹出窗口中显示 Flash 消息而不是警报框?
- reactjs - 反应本机套接字响应未在视图中更新
- mysql - MYSQL数据库求和函数