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

Python 3:如何从父函数调用嵌套函数(非访问变量)

如何在Python 3中调用嵌套函数

嘿,我明白你的困惑啦!之前搜的大多是讲用global或nonlocal访问嵌套函数里的变量,但你要的是直接调用嵌套函数对吧?别着急,我给你分两种常见场景讲清楚:

场景1:在父函数内部调用嵌套函数

这是最基础的用法,完全不需要特殊关键字,直接在父函数里调用嵌套函数的名称就行:

def parent():
    # 定义你的嵌套“子程序”
    def nested():
        print("嵌套函数执行啦!")
    
    # 父函数内部直接调用嵌套函数
    nested()

# 调用父函数时,就会触发嵌套函数的执行
parent()
# 输出:嵌套函数执行啦!

场景2:在父函数外部(顶层作用域)调用嵌套函数

嵌套函数默认只在父函数的作用域内可见,如果想在父函数外面调用它,就得把它“暴露”到外部作用域,这里有两种常用方法:

方法1:让父函数返回嵌套函数

把嵌套函数作为父函数的返回值,调用父函数后就能拿到嵌套函数的引用,之后想什么时候调用都行:

def parent():
    def nested():
        print("我是被外部调用的嵌套函数!")
    
    # 返回嵌套函数对象
    return nested

# 调用父函数,获取嵌套函数的引用
my_nested = parent()
# 直接调用嵌套函数
my_nested()
# 输出:我是被外部调用的嵌套函数!

方法2:将嵌套函数绑定到全局变量

如果你不想用返回值的方式,也可以在父函数内部把嵌套函数赋值给全局变量,不过这种方式尽量少用,容易让代码变乱:

# 先声明一个全局变量占位
nested_func = None

def parent():
    global nested_func
    def nested():
        print("通过全局变量调用的嵌套函数!")
    
    # 把嵌套函数赋值给全局变量
    nested_func = nested

# 先调用父函数,完成全局变量的赋值
parent()
# 现在就能在外部调用嵌套函数了
nested_func()
# 输出:通过全局变量调用的嵌套函数!

小提醒

嵌套函数有个很实用的闭包特性:如果它用到了父函数里的变量,哪怕父函数执行完了,嵌套函数依然能访问这些变量,比如可以用它做一些状态保存的功能~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:30:57