angel_wy 发表于 2025-5-12 09:42:43

内部函数

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

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

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

FishC 发表于 2025-5-12 09:43:33

两个函数的区别解释

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


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

def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn()# 这里会立即执行 funIn

调用示例:

funOut()# 直接输出:宾果!你成功访问到我啦!


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

def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn# 这里返回函数本身,不执行

调用示例:

inner_func = funOut()# 获得 funIn 函数对象
inner_func()         # 输出:宾果!你成功访问到我啦!



关键总结

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


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

player-none 发表于 2025-5-12 17:20:09

第一个是 return funIn(),就是执行 funIn(打印一行字)并且返回 funIn 的返回值(None)

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

求最佳
页: [1]
查看完整版本: 内部函数