python - Python:如何使用函数增加全局变量
问题描述
counter = 0
def addCounter():
counter = counter + 1
return counter
UnboundLocalError:分配前引用的局部变量“计数器”。
每次运行此功能时,我都会尝试进行计数器计数。我也尝试将计数器变量作为参数传递,但这也不起作用。
解决方案
你需要:
counter = 0
def addCounter():
global counter
counter = counter + 1
return counter
说明:在 Python 中,内部变量的声明是隐式的,赋值会自动声明左侧的值,但该声明始终在本地范围内。这就是为什么如果你写这个:
counter = 0
def addCounter():
return counter
它会正常工作,但只要您添加作业
counter = 0
def addCounter():
counter += 1
return counter
它打破了:分配添加了一个隐式的本地声明。global
覆盖它,虽然它要求全局预先存在,但它不会创建全局,它只是告诉函数这是一个可以重新分配的全局变量。
我也尝试将计数器变量作为参数传递,但这也不起作用。
确实不是。Python 的评估策略有时被称为“按共享传递”(或“按值传递引用”),这在技术上是“按值传递”,但该术语有点令人困惑,因为在这种情况下,值是引用,引用被复制但所指的对象不是,因此最终行为偏离了“通过价值”预期的正常预期。
推荐阅读
- rebol - 新行存在于 rebol / red for block 选项卡呢?
- list - 如何在 javafx 中使用 tableview 显示句子标记上的列表?
- swift - 符合相关类型的协议
- python - 带有 python 脚本的 Azure Web 应用服务
- asp.net-core - OpenId Connect 在 SPA 中更新 access_token
- python - 处理 SQL DB 中重复条目的完美和最优雅的方法
- arrays - 什么是连续子数组
- cassandra - 在 Cassandra 中进行缩放
- multithreading - 如何使用安全异常库捕获异步异常?
- saml-2.0 - LDAP 是否支持 SAML 2.0 请求?