内部函数问题
def funa(a):def funb(b):
b = a + 1
return b
return funb
print(funa(5))
执行结果
<function funa.<locals>.funb at 0x000002A7549903A8>
进程已结束,退出代码0
第一个问题:为什么执行失败 返回的是这个是什么?
第二个问题:两个return 返回的意义以及必要性?
本帖最后由 jackz007 于 2019-11-21 18:27 编辑
def funa(a):
def funb(): # 输入参数 b 并没有使用,所以,予以删除
b = a + 1
return b
return funb
print(funa(5)()) # 楼主的函数调用表达有误,这样才对 1. 返回的是 funb 函数。
2. 第一个 return 是 funb 里面的 return 语句,第二个 return 是 funa 的 return 语句。你不写 return 也行,不写 return 代码返回空值(None)。
帮你把代码改了改:
def funa(a):
def funb():
b = a + 1
return b
return funb
print(funa(5)()) # 第一个括号是调用 funa,第二个括号是调用 funa 的返回值 funb jackz007 发表于 2019-11-21 18:26
funb()中不是有表达式b=a+1 为什么这个参数b并没有被使用呢? 打印输出的数字 6 不就是 b 吗? jackz007 发表于 2019-11-21 19:25
打印输出的数字 6 不就是 b 吗?
funb(b)
b = a + 1是不是可以这么理解
当形参b没有被赋值 且表达式b也在等待被赋值的时候
这个参数就是没有意义的?无需声明或者定义? 本帖最后由 jackz007 于 2019-11-21 20:04 编辑
海月清辉 发表于 2019-11-21 19:56
funb(b)
b = a + 1是不是可以这么理解
当形参b没有被赋值 且表达式b也在等待被赋值的时候
因为 b 作为函数的输入参数,在函数中并未被使用,而是直接被赋了其它数值,其作用只是相当于一个普通的局部变量,根本就不需要成为函数的输入参数,所以,就应该把这个摆设删掉。 jackz007 发表于 2019-11-21 20:01
因为 b 作为函数的输入参数,在函数中并未被使用,而是直接被赋了其它数值,其作用只是相当于一 ...
了解了谢谢!
页:
[1]