鱼C论坛

 找回密码
 立即注册
查看: 2225|回复: 4

[已解决]关于函数的一个小问问题

[复制链接]
发表于 2019-11-20 10:42:18 | 显示全部楼层 |阅读模式

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

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

x
1.a = Function1 表示a 为一个函数,a= Function1()表示a为函数运行后的值吗
2.那如果a = Function1(),a()表示什么呢,a()()呢
最佳答案
2019-11-20 13:36:39
本帖最后由 jackz007 于 2019-11-20 14:04 编辑
hjp808 发表于 2019-11-20 12:55
按这个说法,假如Function2 又嵌套 Function3. 那a()() 就是调用嵌套函数Function3了。


      如果像你说的那样的话,所有函数必须这样定义:
def Function1():                          # Function1() 的定义开始
    def Function2():                      # Function2() 的定义开始
        def Function3():                  # Function3() 的定义开始
            print("I'm in Function3()")   # Function3() 的语句
        return Function3                  # Function2() 的返回语句,返回 Function3() 的调用地址
    return Function2                      # Function1() 的返回语句,返回 Function2() 的调用地址

a = Function1()
a()()                                     # 调用 Function3()
Function1()()()                           # 调用 Function3()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-20 11:02:56 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-20 11:16 编辑

def Function1():                             # Function1() 的函数定义
    def Function2():                         # Function2() 的函数定义
        print("I'm in Function2()")   # Function2() 的语句

    return Function2                        # Function1() 的返回语句,返回的是内嵌函数 Function2() 的调用地址

a = Function()                                 # 获取到 Function1() 的内嵌函数 Function2() 的调用地址
a()                                                 # 调用 Function1() 的内嵌函数 Function2(),也可以直接写 Function1()() 来达到同样的目的。

      上面的代码中,蓝色部分属于函数 Function1(),红色部分属于 Function1() 的内嵌函数 Function2()。

       正如上述,a() 是调用内嵌函数 Function2() ,a()() 纯属瞎胡闹。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-20 12:52:39 | 显示全部楼层
a为函数返回值,a()、a()() 是会报错。
比如你的函数值是返回 8 。a的值就是8
再写a(),就无意义也报错。 你假设的函数返回值是什么东西呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-20 12:55:30 | 显示全部楼层
jackz007 发表于 2019-11-20 11:02
def Function1():                             # Function1() 的函数定义
    def Function2():          ...

按这个说法,假如Function2 又嵌套 Function3. 那a()() 就是调用嵌套函数Function3了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-20 13:36:39 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-11-20 14:04 编辑
hjp808 发表于 2019-11-20 12:55
按这个说法,假如Function2 又嵌套 Function3. 那a()() 就是调用嵌套函数Function3了。


      如果像你说的那样的话,所有函数必须这样定义:
def Function1():                          # Function1() 的定义开始
    def Function2():                      # Function2() 的定义开始
        def Function3():                  # Function3() 的定义开始
            print("I'm in Function3()")   # Function3() 的语句
        return Function3                  # Function2() 的返回语句,返回 Function3() 的调用地址
    return Function2                      # Function1() 的返回语句,返回 Function2() 的调用地址

a = Function1()
a()()                                     # 调用 Function3()
Function1()()()                           # 调用 Function3()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 18:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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