python - 多次调用后更改内部函数中的非局部变量的结果
问题描述
我在 python 中搞乱以掌握使用内部函数、闭包之类的东西,我遇到了在我看来很奇怪的行为。
当我尝试在内部函数中更改外部函数变量的值时,我希望要么跟踪后续调用闭包所做的更改,要么根本没有更改。
def a():
x = 0
def b():
nonlocal x
print(x)
x =+ 1
return b
c = a()
c()
c()
c()
c()
c()
在我的情况下,如果我可以修改变量并且更改是否持续存在,我期望从每次调用中获得 1、2、3、4、5 或仅 0。
但是当我运行代码时,我得到了:
0
1
1
1
1
而且我无法弄清楚它为什么会改变,但只有一次。任何人都可以解释一下吗?
解决方案
你有+
错误的地方
x =+ 1
方法
x = +1
x = 1
不是
x += 1
所以你不添加1
,x
但你总是设置1
推荐阅读
- aws-codeartifact - 命令`aws codeartifact get-authorization-token --DomainName Name --domain-owner accountid --query authorizationToken --output text
- android - 无法访问 Agora URL
- r - R:计算密度曲线下的面积,直到截止值
- docker - Nexus IQ 为 alpine openjdk 中的库标记了组件未知
- sql-server - 如何使用 Azure SQL 存储冷热数据
- javascript - 如何在
多个vuejs - python - jsonification后如何获取与MultiIndex相同的pandas.DataFrame?
- sqlite - 如果 * 添加为标记字符,则 FTS 不起作用
- java - 让 Bazel 读取 Maven 远程和本地存储库
- linux - 如何在 ubuntu 中配置 DNS?为什么显示域名解析暂时失败?