鱼C论坛

 找回密码
 立即注册
查看: 52|回复: 2

内部函数

[复制链接]
发表于 9 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问这两个函数的区别是什么?

第一个:
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    return funIn()

第二个:
def funOut():
    def funIn():
        print('宾果!你成功访问到我啦!')
    return funIn

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 9 小时前 | 显示全部楼层
两个函数的区别解释

这两个函数的区别在于 返回值类型执行时机

  • 第一个函数
    调用 funOut() 时会直接执行内部函数 funIn(),并返回其执行结果(此处返回 None,因为 funIn 没有显式返回值)。

    1. def funOut():
    2.     def funIn():
    3.         print('宾果!你成功访问到我啦!')
    4.     return funIn()  # 这里会立即执行 funIn
    复制代码

    调用示例:

    1. funOut()  # 直接输出:宾果!你成功访问到我啦!
    复制代码

  • 第二个函数
    调用 funOut() 时仅返回 funIn 函数对象,需要再调用一次才能执行。

    1. def funOut():
    2.     def funIn():
    3.         print('宾果!你成功访问到我啦!')
    4.     return funIn  # 这里返回函数本身,不执行
    复制代码

    调用示例:

    1. inner_func = funOut()  # 获得 funIn 函数对象
    2. inner_func()           # 输出:宾果!你成功访问到我啦!
    复制代码



关键总结
  • 第一个函数:返回函数执行结果(立即触发打印)
  • 第二个函数:返回函数对象(需要二次调用才会触发打印)


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层
第一个是 return funIn(),就是执行 funIn(打印一行字)并且返回 funIn 的返回值(None)

第二行返回 funIn,可以用 funOut() 获取 funIn,可以用 funOut()() 执行 funIn

求最佳
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-12 18:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表