在 Ruby 中,块参数的工作方式如下:
def foo_bar (&block)
block.(4)
end
foo_bar do |x|
puts x
puts x * 2
end
=begin
4
8
=end
我在 Python 中看到了以下等效项,但我发现它非常不令人满意,因为它需要定义函数直到那时将其作为参数传递:
def foo_bar(block):
block(4)
def callback(x):
print(x)
print(x * 2)
foo_bar(callback)
'''
4
8
'''
Python 中是否有任何替代方案,不需要先定义函数?
不,Python不允许这样的语法糖。它没有匿名函数;它提供的最接近的是lambdas,但它们有许多限制,即它们只能有一个表达式,即一“行”代码。
定义函数def
是创建可重用代码块的Pythonic 方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)