好吧,我确实试着读过Lambda函数,但是没有找到任何链接来解释关于它的流和python解释器处理它的方式的一些问题,或者可能是我无法正确理解它。 我没有什么问题,请有人帮我澄清一下。 代码如下:
def f1(n):
print 'in f1, value is : ', n
return lambda x: x+n
if __name__ == '__main__':
f= f1(100)
print f(1)
print f(3)
print f1(10)
print f(5)
print type(f1)
输出为:
^{2}$我的问题是:
f(1)
和f(3)
为什么没有调用print
语句以及何时调用
我们称f1(100)
lambda语句未编译的原因。在x
和{f(5)
会是15(10+5)print f1(10)
lambda x:
在这里是什么意思,是这个块的x名称吗?请解释一下。在谢谢大家。在
lambda只是在一行上写函数的一种方式。在
最初,您可能看不到其中的要点,但它们可以用于生成许多稍有不同的函数,或指定只能使用一次的函数,或指定所有其他各种实例。在
为了更好地理解这些代码,请设想以下代码-与您自己的代码稍有不同:
这与您自己的代码所做的非常相似,但是通过在第一个函数中定义一个函数,然后返回它。这本质上和你的代码一样。在
lambda
几乎是另一个函数。要使用它,你也得叫它。在将实际lambda返回给
f
,而不是整个函数f1
。同时,当你归还lambda时,它不会被调用。这就是为什么当您调用f(1)
和f(3)
时,它实际上并没有运行f1
,而只运行lambda。在还记得我说过lambdas就像函数吗?那么}。在
x
是一个参数,而n
是您在f1
中定义的局部变量{f(5) != 15
因为您实际上没有在任何地方使用f1(10)
。你只是印出来的。如果你做了f = f(10)
,那么它就是15
。在print f1(10)
打印lambda函数(因为这是返回的函数)。它不叫它,只是打印出来。在首先,您应该理解Python中的所有东西都是一个对象。功能确实无处不在。在
从您的函数
f1()
,您实际上返回了对lambda
函数的引用。你可以在任何变量中赋值。在例如:
现在,让我们继续你的例子。您的第一个语句在
^{pr2}$if
内是:此作业相当于:
所以,接下来的两个电话非常接近:
现在你得到}之间的关系x'被
x
和{f
的参数替换,而'n'则被f1
的参数替换。在f1()
返回对lambda函数的引用。这就是它将要打印的内容。输出与您在下面的片段中得到的类似:除了将
func
替换为lambda
,因为f1只返回lambda函数。在如果在前面的语句中将
f1
的返回值重新分配给f
,那么您就可以得到这个输出。但是,由于您刚刚打印了f(10)
的值,f
仍然绑定到-lambda x: x + 100
。所以你得到105
。在然后打印
f1
类型,它只是一个函数:相关问题 更多 >
编程相关推荐