PHP转Python:如何匿名传递多个函数作为参数?
Python 实现 PHP 式匿名函数传参方案
对应PHP逻辑的核心实现
先给你匹配需求的Python主函数,它能接收t1、t2和任意数量的函数参数,遍历执行这些函数:
def s(t1, t2, *funcs): for func in funcs: func()
直接传匿名函数(和PHP写法最接近)
不需要预先声明函数,直接用lambda写匿名逻辑传入,完全贴合你的要求:
# 调用示例,传入两个匿名函数 s(1, 2, lambda: print("hello"), lambda: print("world"))
解决你遇到的partial问题
你用partial(print, 5)没成功?大概率是调用姿势不对,正确用法是直接把partial对象传入即可:
from functools import partial # 绑定print的第一个参数为5,传入s执行 s(1, 2, partial(print, 5))
执行后会输出5,这个方案在复用已有函数并固定部分参数时非常实用,属于合理方案。
进阶:给传入的函数传递参数
如果你的PHP原逻辑里,执行函数时会把t1、t2传给它们,Python也能轻松实现:
def s(t1, t2, *funcs): for func in funcs: func(t1, t2) # 调用时传入接收参数的匿名函数 s(10, 20, lambda a, b: print(f"两数之和: {a + b}"), lambda x, y: print(f"两数之积: {x * y}") )
最佳实践总结
- 简单无参数逻辑:用
lambda直接传,最简洁,和PHP匿名函数体验一致。 - 绑定固定参数:用
functools.partial,适合复用print这类已有函数的场景。 - 多行复杂逻辑:如果
lambda不够用,还能在调用时直接定义临时函数:
s(1, 2, def(): print("第一行内容") print("第二行内容") )
内容的提问来源于stack exchange,提问作者upkagefa
相关产品推荐
相关产品推荐

