Python函数问题
您好,我是一名学习Python的初学者,我在一本书中偶然发现了这个示例,出于某种原因,当我自己尝试相同的代码时,我没有收到相同的输出?请帮忙Python函数问题,python,python-3.x,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) >
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,这本书有什么问题吗?。您确定使用的是python 3吗<代码>非本地是Python3的一项功能,在Python2.x中不起作用。。您确定使用的是python 3吗<代码>非本地是Python3的一个特性,在Python2.x中不起作用。总结了它。基本上,python从2.~到3.0>=发生了很大变化,最终出现了类似这样的问题。将书开头的内容与他们正在使用的版本进行比较,并与您自己的版本进行比较。总结。基本上,python从2.~到3.0>=发生了很大变化,最终出现了类似这样的问题。将本书开头的内容与他们正在使用的版本进行比较,并与您自己的版本进行比较。您得到了什么输出?您确定没有在Python2.x上运行它吗?@Keith它在Python2.x中根本不起作用(在
非本地状态下抛出错误
)。不管怎么说,我在terminal中试过了,它对我来说很好。你得到了什么输出?你确定你没有在Python 2.x中运行它吗?@Keith它在Python 2.x中根本不起作用(在非局部状态下抛出错误
)。不管怎样,我在终端上试过了,它对我来说很好。你怎么知道你是否在使用python 3?我只是通过键入“python”在终端中以交互方式运行python?或者您需要为python 3以不同的方式运行它吗?我确实安装了python 3.2。@user1265535:打开python终端时,第一行列出了win32上的python 2.7.3(默认,2012年4月10日,23:31:26)[MSC v.1500 32位(英特尔)]的版本。是的,我的坏了,现在在终端中工作,这很奇怪,谢谢:)您如何知道您是否正在使用python 3?我只是通过键入“python”在终端中以交互方式运行python?或者您需要为python 3以不同的方式运行它吗?我确实安装了python 3.2。@user1265535:打开python终端时,第一行列出了win32上的python 2.7.3(默认值,2012年4月10日,23:31:26)[MSC v.1500 32位(英特尔)]的版本。好吧,我的坏了,它现在在终端中工作,这很奇怪,谢谢:)