Python函数问题

时间:2012-06-11 10:41:23

标签: python python-3.x

嗨,我是一名正在学习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,这本书有问题吗?

2 个答案:

答案 0 :(得分:1)

Works for me。你确定你使用的是python 3吗? nonlocal是一个python 3功能,在python 2.x中工作。

答案 1 :(得分:0)

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