首页 > 解决方案 > 增量函数如何不增加 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())

标签: pythonpython-2.7

解决方案


当你有这样的代码时:

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 = numn是里面使用的变量的名称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)

推荐阅读