我从以下链接学习了python中装饰器的概念:
http://www.python-course.eu/python3_decorators.php
我对其中的以下代码段有一个基本的疑问:
def f(x):
def g(y):
return y + x + 3
return g
nf1 = f(1)
nf2 = f(3)
print(nf1(1))
print(nf2(1))
在此页面中,写入最后两行的输出分别为'5'和'7'。 但正如我所看到的,我们只传递'x'的值,它从哪里得到'y'的值?它如何为'Y'分配值来计算输出?
答案 0 :(得分:1)
函数f
创建并返回一个名为g
的新函数。
因此,此代码通过传递g
和x=1
来创建两个x=3
函数:
nf1 = f(1)
nf2 = f(3)
然后使用参数g
调用nf1
函数(存储在nf2
和y=1
中):
print(nf1(1))
print(nf2(1))
如果他们写下等价物,那么可能(或许不是)会更容易理解:
print(f(1)(1)) # x=1, y=1
print(f(3)(1)) # x=3, y=1