本帖最后由 thexiosi 于 2018-5-17 16:16 编辑
没事,慢慢来,我们一个一个问题说:
(1)中意思在print下面再打一次fun2()就是调用函数的意思吗?小甲鱼平时说的调用函数他都是定义完了函数,在全局里打这个函数名,这个叫调用啊。
我们再看一遍 fun1()函数 代码: 老师说的没错,函数定义完毕后才能调用。 fun1()里已经完整定义了fun2() 且 是在fun2()定义结束后(调用它的子函数),执行的调用,因此调用有效。如果把fun2()提到def fun2()前,会报错。
- def fun1():
- print('fun1()')
- def fun2():
- print('fun2()')
- fun2()
复制代码
(3)中你说报错的原因是没带参数,但是我写的是return FunY(y)也是报错,括号里不是空白,有写参数y,只有写单独return FunY不会报错。
return FunY()会报错,return FunY(y) 肯定也会报错。因为他们都无法被程序正常识别:return FunY(), 会提示你缺失参数;return FunY(y),会提示你 y没有被定义,因为变量y定义在FunY函数中,FunX不知道y到底是什么。这段代码,有效return方式就是:return FunY ,返回函数地址
(4)中“因为最终返回了FunY()函数的地址,因此使得FunX(8)(5)有效”我还是没理解到意思,什么叫函数的地址?地址?这个因果关系,使得FunX(8)(5)有效没明白,能再讲下吗。万分感激
举个栗子
- def fun1(x):
- x = x * 5
- return x
复制代码
>>> fun1 #返回函数的地址
<function fun1 at 0x0000000002FB8268>
>>> fun1(5) #正常调用函数
25