python - 简单:为什么函数 B 内部的函数 A 不更改传递给它的全局变量?
问题描述
代码不会将 1 添加到“ctr”变量。怎么做?
ctr = 0
def x(ctr): #function A
ctr+=1
def y(): #function B
global ctr
x(ctr) #function A
y()
print(ctr)
>>> 0
解决方案
整数是按值传递的,而不是引用。您必须在global ctr
内部x()
修改全局变量,或返回分配给该值的结果:
ctr = 0
def x(ctr): #function A
ctr+=1
return ctr
def y(): #function B
global ctr
ctr = x(ctr) #function A
y()
print(ctr)
推荐阅读
- postgresql - 在 macos catalina 上将 postgres 与 hasura docker 连接时出错
- flutter - Flutter url_launcher 在安装的应用程序(Facebook)中打开 Facebook 链接,但在 IOS 中它只打开 facebook 而不是链接
- c# - 从 ASP.NET Core 中的父表更新子表
- matlab - 使用 MATLAB 有效地保存一些大变量
- javascript - 将 Spotify 播客嵌入 iframe (IE11) 时供应商文件中的 Spotify 语法错误
- php - 为什么我使用 PHP 查询时会出错
- r - 有没有办法在 R 中隐藏网络图中的边缘?
- angular - 从方法转向服务角度
- mysql - 运行 SpringBoot 应用程序时出现 Column Id not Found 错误?
- javascript - Formik + Yup,数组被转换为对象,然后验证失败