是否可以在Python中编写一个不需要传递任何参数的lambda函数?例如,有没有办法翻译这个函数:
def file_opener():
f = open('filename.txt').read()
return f
或任何其他没有传递输入的函数 变成 lambda 表达式?
你当然可以做到..
x = lambda : 6
print(x()) # prints -> 6
但你可能不应该这样做。一旦您觉得需要将函数绑定到变量名,您应该像在示例中那样走很长的路(
def ..
)。
尝试这个(推荐,因为不存在硬编码):
file = lambda f: open(f).read()
print (file('open.txt'))
如果您不想将文件名作为参数传递,请使用:
f = lambda: open('open.txt').read()
print (f())
试试吧!
>>> open('filename.txt', 'w').write('this is filename.txt contents')
29
>>> def call_this(fctn):
... return fctn()
...
>>> print(call_this(lambda: open('filename.txt').read()))
this is filename.txt contents
有效