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

Python中能否在函数内定义函数以实现f().f2()链式调用效果?

Python 链式调用f().f2()需求实现说明

结论

该需求完全可以实现。

实现原理

Python 中函数属于第一类对象,外层函数f()只要返回一个挂载了f2、f3方法的对象,就能满足你提到的链式调用语法要求。

可运行代码示例

方案1:返回自定义类实例(推荐,可读性和可维护性更强)

def f():
    # 内部定义类承载f2、f3方法
    class InnerClass:
        def f2(self):
            print("Hello world")
        def f3(self):
            print("自定义的其他输出字符串")
    # 外层函数返回内部类的实例
    return InnerClass()

调用测试效果:

  • 执行f().f2(),控制台输出:Hello world
  • 执行f().f3(),控制台输出:自定义的其他输出字符串

方案2:给内部函数对象直接绑定方法

利用Python函数本身支持挂载属性的特性,也可以不用类实现:

def f():
    # 定义一个空的内层函数作为返回载体
    def inner_holder():
        pass
    # 定义f2、f3两个方法
    def f2():
        print("Hello world")
    def f3():
        print("自定义的其他输出字符串")
    # 给载体函数绑定方法
    inner_holder.f2 = f2
    inner_holder.f3 = f3
    # 返回挂载了方法的载体函数
    return inner_holder

该方案的调用效果和方案1完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:24:04