python - 增量函数如何不增加 num 变量?
问题描述
我无法理解,请帮助我。我只想知道为什么 num 变量在调用函数增量器时不递增?我猜输出应该是(100,100),而是显示(100,0)
def main():
counter=Counter()
num=0
for x in range(0,100):
incrementor(counter,num)
return (counter.count, num)
def incrementor(c, num):
c.count+=1
num+=1
class Counter:
def __init__(self):
self.count=0
print(main())
解决方案
当你有这样的代码时:
class Counter:
def __init__(self):
self.count = 0
def incrementor(c, num):
c.count += 1
num += 1
def main():
counter = Counter()
num = 0
incrementor(counter, num)
return (counter.count, num)
print(main())
呼叫站点实际发生的情况:incrementor(counter, num)
是这样的:
警告:前面的伪代码
counter = Counter()
num = 0
c = counter
num = num
call incrementor
上面说的很离奇,很容易让人误解,所以我改写一下:
警告:前面的伪代码
def incrementor(c, n):
c.count += 1
n += 1
counter = Counter()
num = 0
c = counter
n = num
call incrementor
现在我放n = num
的n
是里面使用的变量的名称incrementor()
,它显示n
了一个不同的变量,它在函数内部递增,但在返回时被丢弃。
所以,为了做你想做的事,你需要这样做:
class Counter:
def __init__(self):
self.count = 0
def incrementor(c, num):
c.count += 1
return num + 1
def main():
counter = Counter()
num = 0
for x in range(0, 100):
num = incrementor(counter, num)
return (counter.count, num)
print(main())
输出:
(100, 100)
推荐阅读
- python - VSCode 和 Pylance 没有正确运行模块 matplotlib
- python-3.x - ValueError: Layersequential_1 需要 1 个输入,但它接收到 2 个输入张量
- javascript - 如何从 GitHub 获取授权用户的所有提交?
- python - 计算列表中出现的次数[元组]
- python - 如何在 Numpy 数组上进行 for 循环以获取单独记录中的每一行
- c++ - C ++如何在用户输入三个错误的猜测后停止我的代码
- snowflake-cloud-data-platform - Jitterbit Cloud Studio 雪花查询转换错误 - qName 和根名称 CASE SENSITIVITY
- rust - 为什么 entry 需要 key 的所有权?
- excel - .FIND 找不到日期
- python-3.x - 从 AppleScript 启动 Python 脚本会在读取一行时产生 EOFError