如何在Python中创建自调用匿名函数?
例如使用JavaScript:
标准方式:
function fn (a) {
if (a == 1) {
alert(a);
}
else {
alert(0);
}
/...
}
fn(1);
自我调用匿名电话:
!function(a) {
if (a == 1) {
alert(a);
}
else {
alert(0);
}
/...
}(1);
Python中是否有任何类似物?
答案 0 :(得分:6)
鉴于您对lambda答案的评论,我认为不可能。 lambda
运算符是Python支持匿名函数的唯一方法。如果您需要支持语句,则需要使用始终必须命名的def
。
请记住,lambdas可以支持有限的if-then逻辑。以下两个是lambda
表达式,它们实现了上面给出的if-then逻辑:
(lambda a: alert(1 if a == 1 else 0))(1)
更字面意思:
(lambda a: alert(a) if a == 1 else alert(0))(1)
答案 1 :(得分:4)
如果您的函数很简单且只有表达式(没有语句),那么您可以使用lambda
创建匿名函数并将其调用为内联函数。
>>> (lambda x, y: x*y)(3, 5)
15
答案 2 :(得分:2)
是(使用from __future__ import print_function
的Python 3或Python 2):
(lambda x: print(x))('foo')
但是使用lambda
,您只能编写一行代码。
答案 3 :(得分:2)
您可以使用命名函数并在使用它之后取消绑定其名称,如:
def hello(there):
print there
hello("france")
del hello
答案 4 :(得分:1)
您始终可以滥用exec
,将代码作为字符串传递:
def anon(code):
execdict = {}
exec('def f():{}'.format(code), execdict)
return execdict['f']
anon("print('hello'); print('hello again')")()
(这在python 3中有效,我认为exec
在早期版本中表现得非常不同)