1

嗨,我是一个正在学习 Python 的初学者,我在书中偶然发现了这个示例,由于某种原因,当我自己尝试相同的代码时,我没有收到相同的输出?请帮忙...

def tester(start):
    state = start
    def nested(label):
        nonlocal state
        print(label, state)
        state += 1
    return nested

>>> F = tester(0)
>>> F('spam')
spam 0
>>> F('ham')
ham 1
>>> F('eggs')
eggs 2

每次运行该函数时,我的结果都不会增加 + 1,这本书有问题吗?

4

2 回答 2

1

为我工作。你确定你使用的是python 3吗?nonlocal是 python 3 的功能,在 python 2.x 中不起作用

于 2012-06-11T10:45:15.180 回答
0

https://stackoverflow.com/a/1261961/778858总结了一下。基本上 python 从 2.~ 到 3.0 >= 发生了很大变化,你最终会遇到这样的问题。将本书开头所说的内容与他们正在使用的版本进行比较,并将其与您自己的版本进行比较。

于 2012-06-11T10:45:50.057 回答