You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python除def和单行lambda外还有哪些定义函数的优雅实现方式?

回答

Python 原生语法暂不支持你示例中 xxx 形式的多行内联函数定义,但可以根据函数逻辑复杂度选择对应的优雅实现方案:

需求实现方案

情况1:函数逻辑仅为单行表达式

直接用 lambda 即可完美匹配你想要的写法:

  1. 工厂函数示例
def create(first):
    return lambda second: print(first, second)
  1. 字典存储函数示例
obj = {
    'a': lambda: 'a',
    'b': lambda: 'b',
    'c': lambda: 'c'
}

情况2:函数包含多行逻辑

如果函数逻辑超过一行,目前最推荐的写法就是你已经在用的嵌套 def,可读性和性能都是最优的,不需要强行追求更短的写法。
如果确实需要动态生成函数,可以用 types.FunctionType 或者 exec 动态构造,但这两种方式可读性差、调试难度高,非必要不推荐使用。

其他定义可调用对象的方式

除了 def 和 lambda,Python 还有几种可以实现函数功能的方式:

  • 类实现 __call__ 方法,实例可以像函数一样调用
class Runner:
    def __init__(self, first):
        self.first = first
    def __call__(self, second):
        # 支持任意多行逻辑
        print(self.first, second)

def create(first):
    return Runner(first)
  • 用 functools.partial 生成偏函数,用来固定原有函数的部分参数
from functools import partial

def print_val(first, second):
    print(first, second)

def create(first):
    return partial(print_val, first)
  • 底层动态构造 FunctionType 对象,一般用于框架层的元编程场景,业务代码很少用到

内容的提问来源于stack exchange,提问作者z3r0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:27:03