rychair 发表于 2020-11-23 21:13:12

零基础入门学习Python第19讲课后作业第一题

def next():
    print('我在next()函数里...')
    pre()

def pre():
    print('我在pre()函数里...')
   
next()

这是题目,问会输出什么?以下是答案。

有些编程语言不够“聪明”,向这类向前引用的方式会导致报错,但Python足够“醒目”,这段代码是正确的!
会输出:
我在next()函数里...
我在pre()函数里...

问题是我复制代码后只输出了第一行,后面报错了,不知道什么原因??请教高手
我在next()函数里...
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
    next()
File "<pyshell#2>", line 3, in next
    pre()
UnboundLocalError: local variable 'pre' referenced before assignment

昨非 发表于 2020-11-23 21:20:08

你复制错了吧,亲测没问题啊,
def next():
    print('我在next()函数里...')
    pre()

def pre():
    print('我在pre()函数里...')
   
next()

输出:
我在next()函数里...
我在pre()函数里...

你看看你上面哪里引用了pre,在赋值前,造成报错

rychair 发表于 2020-11-23 21:25:25

昨非 发表于 2020-11-23 21:20
你复制错了吧,亲测没问题啊,




我复制到软件运行窗体里面错了,如果把语句复制到一个新的文件运行就是对的。晕

昨非 发表于 2020-11-23 21:25:59

rychair 发表于 2020-11-23 21:25
我复制到软件运行窗体里面错了,如果把语句复制到一个新的文件运行就是对的。晕

小问题

rychair 发表于 2020-11-24 19:36:58

昨非 发表于 2020-11-23 21:25
小问题

不好意思,我昨晚想了半天还是不懂。在第一个自定义函数 next() 下面单独写了一行 pre(), 这是什么意思呢?后面再跟一个自定义函数 pre(),为何程序运行 next(), 这是第一个自定义函数,会打印两个自定义函数的值呢?这就是后面要讲的内嵌函数吗?很奇怪,第二个如果是内嵌函数,为啥没有缩进呢?我只能厚着脸皮再问您以下,谢谢。

昨非 发表于 2020-11-24 19:41:15

rychair 发表于 2020-11-24 19:36
不好意思,我昨晚想了半天还是不懂。在第一个自定义函数 next() 下面单独写了一行 pre(), 这是什么意思呢 ...

就是定义函数1,里面调用了2
有定义了函数2

最后调用了1->打印next()
又因为1里面调用了2->所以也打印了pre()

函数只有被调用的时候才会执行
页: [1]
查看完整版本: 零基础入门学习Python第19讲课后作业第一题