在Ruby中,块参数的工作方式如下:
def method (&block)
block.call(4)
end
method do |x|
puts x
end
# 4
我已经在Python中看到以下“等价”,但是我发现它并不令人满意,因为它需要定义函数并且只有这样将该函数作为参数传递:
def method(block):
block(4)
def call(x):
print(x)
method(call) # 4
Python中是否有其他替代方法,不需要先定义函数?
[不,Python不允许使用这种语法糖。它没有匿名函数;它提供的最接近的是,但是它们有很多限制,即它们只能有一个表达式,即一个“行”代码。 使用def
定义函数是创建可重用代码块的Python方法。