零基础入门学习python 课本疑问求解
第二版书本第76页代码:def funX(x):
def funY(y):
return x*y
return funY
temp=funX(8)
temp(5)
返回值是40,请问这里是怎么看的,因为我感觉上面代码并没有对y值进行定义
望学友们解答,谢谢~ 我感觉上面代码并没有对y值进行定义为什么不感觉上面代码没有对x值进行定义 def funX(x):
def funY(y):
return x*y
return funY
temp(5)
实际上可以分解来看,有助于理解:
先 把 8 传入 funX 并赋值给temptemp=funX(8) :
# 此时 temp 就等于这样的
def funX(8):
def funY(y):
return 8 * y
return funY
然后在 temp(5) 把 5 传入:
def funX(8):
def funY(5):
return 8 * 5
return funY
最后返回 40
def funX(x):
def funY(y):
return x*y
return funY
temp=funX(8)
temp(5)
标红的地方难道不是在对 x, y 进行定义吗? liuzhengyuan 发表于 2020-5-24 13:55
def funX(x):
def funY(y):
return x*y
我说错了,是我感觉没有赋值 zwy8888 发表于 2020-5-24 13:59
我说错了,是我感觉没有赋值
def funX(x):
def funY(y):
return x*y
return funY
temp=funX(8)
temp(5)
这就是赋值 Twilight6 发表于 2020-5-24 13:54
实际上可以分解来看,有助于理解:
先 把 8 传入 funX 并赋值给temptemp=funX(8) :
temp(5)这个语句是对y进行赋值的意思吗?我还是有点懵 zwy8888 发表于 2020-5-24 13:59
我说错了,是我感觉没有赋值
def funX(x):
def funY(y):
return x * y
return funY
temp = funX(8)(5)
print(temp)
你也可以这样看 zwy8888 发表于 2020-5-24 14:01
temp(5)这个语句是对y进行赋值的意思吗?我还是有点懵
内嵌函数的参数是第二个括号里的,第一个括号是外部的函数的参数 zwy8888 发表于 2020-5-24 14:01
temp(5)这个语句是对y进行赋值的意思吗?我还是有点懵
是的temp(5)这个语句是对y进行赋值 永恒的蓝色梦想 发表于 2020-5-24 13:53
为什么不感觉上面代码没有对x值进行定义
funX(8)就是对x的定义吧 liuzhengyuan 发表于 2020-5-24 13:59
def funX(x):
def funY(y):
return x*y
好的明白了,谢谢~ zwy8888 发表于 2020-5-24 14:11
funX(8)就是对x的定义吧
那 temp(5) 是什么? Twilight6 发表于 2020-5-24 14:03
内嵌函数的参数是第二个括号里的,第一个括号是外部的函数的参数
为什么可以这样写, temp=funX(8) 明明是把函数值赋值给了temp 这样好像temp变成了一个函数一样{:10_243:}
zwy8888 发表于 2020-5-24 14:19
为什么可以这样写, temp=funX(8) 明明是把函数值赋值给了temp 这样好像temp变成了一个函数一样{:10_243: ...
没错啊 的确是变成函数了 你可以试试tpye
temp = funX(8)
print(type(temp))
print(temp(5))
运行后结果是:
<class 'function'>
40
因为第一次赋值是赋值给 x只给外部函数的
又因为外部函数返回的是 funY
所以你 temp(5) 就等价于 funY(5) zwy8888 发表于 2020-5-24 14:19
为什么可以这样写, temp=funX(8) 明明是把函数值赋值给了temp 这样好像temp变成了一个函数一样{:10_243: ...
这就是链式调用,
temp就是funX的返回值,也就是一个函数
temp当然可以操作这个函数 Twilight6 发表于 2020-5-24 14:23
没错啊 的确是变成函数了 你可以试试tpye
运行后结果是:
嗯嗯,貌似理解了,多谢啦还真是要细品{:10_257:} qiuyouzhi 发表于 2020-5-24 14:24
这就是链式调用,
temp就是funX的返回值,也就是一个函数
temp当然可以操作这个函数
嗯嗯,链式调用 目前对于我是一个新名词,学到啦 谢谢~ zwy8888 发表于 2020-5-24 14:30
嗯嗯,貌似理解了,多谢啦还真是要细品
如果帮助到你~那就给个最佳把~
页:
[1]