gpt4 book ai didi

python - 带有两个内部函数的闭包 python

转载 作者:行者123 更新时间:2023-12-02 20:30:05 25 4
gpt4 key购买 nike

我正在尝试编写一个包含两个内部函数的闭包,但出现以下错误

def factory(n=0):
#n=0

def current():
return n
return current
def counter():
n=n+1
return n
return counter


f_current,f_counter = int(input())

print(f_counter())
print(f_current())

我有以下错误:

   >>4
Traceback (most recent call last):
File "C:/Users/lokesh/Desktop/python/closure3.py",
line 13, in <module>
f_current,f_counter = int(input())
TypeError: 'int' object is not iterable

我的要求是输入4后,应该显示:

  4
5

我是Python新手,有人可以帮助我吗...提前致谢

最佳答案

这看起来更像你想要的:

def factory(n=0):

def current():
return n

def counter():
nonlocal n
n += 1
return n

return current, counter

f_current, f_counter = factory()

print(f_current())
print(f_counter())
print(f_current())
print(f_counter())

输出:

0
1
1
2

4 作为输入:

f_current, f_counter = factory(4)
print(f_current())
print(f_counter())

4
5

factory() 返回两个内部函数。您需要使用 nonlocal 来递增封闭函数中的 n。如果没有 nonlocal,您将无法修改 n,但会得到:

UnboundLocalError: local variable 'n' referenced before assignment

因为n只是一个局部变量。 nonlocal n 使封闭函数中的 n 可以在内部函数内部进行修改。在 current 中评估 n 没问题,因为 Python 的作用域规则允许对外部作用域中的变量进行读取访问,此处是从封闭函数的作用域中读取访问权限。

关于python - 带有两个内部函数的闭包 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49085106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com