鱼C论坛

 找回密码
 立即注册
查看: 723|回复: 8

[已解决]《零基础入门学习Python》第20课 闭包 课后题2的问题

[复制链接]
发表于 2018-5-10 08:46:47 | 显示全部楼层 |阅读模式

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

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

x
课后题2里面说 正确的调用方法是
def outside():
    print('I am outside!')
    def inside():
        print('I am inside!')
        
    inside()
outside()

但是这样执行下来不也是先执行inside(),然后执行outside()么,这样一来,不也是先要调用内部函数吗?为啥这样就能成功呢?不理解,希望知道的指点指点。
最佳答案
2018-5-10 10:40:53
def outside():
    print('I am outside!')
    def inside():
        print('I am inside!')  
    inside()
# ===== 上面仅仅是定义一个方法 outside 但是并没有执行

outside()
# 到这里才是调用方法,就上面这一行 outside() 等价于下面的:
# print('I am outside!')
# def inside():
#     print('I am inside!')  
# inside()

注意看缩进对齐的哪里,Python不像java c 这些,在{}内写函数体,完全靠格式规范
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-10 08:57:32 | 显示全部楼层
hi 代码是 先执行 outside(),再执行 inside()

def outside():   #执行outside()后,先调用  outside(),首先打印I am outside!,当执行到 inside(),再调用 inside(),打印I am inside!
    print('I am outside!')
    def inside():
        print('I am inside!')
        
    inside()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-5-10 09:01:17 | 显示全部楼层
thexiosi 发表于 2018-5-10 08:57
hi 代码是 先执行 outside(),再执行 inside()

def outside():   #执行outside()后,先调用  outside() ...

但是inside()不是在outside()调用之前么?为啥是先执行outside()呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-10 09:03:53 | 显示全部楼层
函数执行的入口在哪里?
是先执行的outside,通过outside调用了inside,只不过inside先结束了,outside最后结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-10 09:11:41 | 显示全部楼层
inside()是在函数体内哦!
outside()是在函数体外,此时它是调用函数的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-10 10:15:46 | 显示全部楼层
liyuaneec 发表于 2018-5-10 09:01
但是inside()不是在outside()调用之前么?为啥是先执行outside()呢

hi 是这样的

你先执行了 outside(),对吧?此时开始调用 outside(), 在执行outside()的过程中,调用了 inside(), 然后inside()先结束,最后outside()结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-10 10:40:53 | 显示全部楼层    本楼为最佳答案   
def outside():
    print('I am outside!')
    def inside():
        print('I am inside!')  
    inside()
# ===== 上面仅仅是定义一个方法 outside 但是并没有执行

outside()
# 到这里才是调用方法,就上面这一行 outside() 等价于下面的:
# print('I am outside!')
# def inside():
#     print('I am inside!')  
# inside()

注意看缩进对齐的哪里,Python不像java c 这些,在{}内写函数体,完全靠格式规范
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-10 11:02:13 | 显示全部楼层
谢谢大家的帮助,看来我的第一课没有学好呀。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-10 11:50:49 | 显示全部楼层
刚看完这节课,过来一块学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 00:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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