有没有办法在 Python 中传递块参数而不先将其定义为函数?

2023-12-20

在 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(使用前将#替换为@)

有没有办法在 Python 中传递块参数而不先将其定义为函数? 的相关文章

随机推荐