一直没看懂、没理解左右两个函数的区别,所以把它们并列在一块对比
左边的那个是返回函数本身,右边那个是返回函数调用的返回值,但是函数定义的时候是需要参数的,那么你调用的时候也得传参数 isdkz 发表于 2023-5-16 13:34
左边的那个是返回函数本身,右边那个是返回函数调用的返回值,但是函数定义的时候是需要参数的,那么你调用 ...
左边的那个是返回函数本身 --- 有什么意义呢?
右边那个是返回函数调用的返回值 --- 但右边下面除了第一个,其他所有的调用都是返回错误 lzb1001 发表于 2023-5-16 14:30
左边的那个是返回函数本身 --- 有什么意义呢?
一般返回函数地址都是闭包里面用到的
平常函数都是返回值的 右侧明显是个错误函数你拿他来想说明点啥呢 wp231957 发表于 2023-5-16 14:49
右侧明显是个错误函数你拿他来想说明点啥呢
我就是不清楚、看不明白、不理解,所以才发帖请教哦,哪里知道它是错误的啊 lzb1001 发表于 2023-5-16 15:04
我就是不清楚、看不明白、不理解,所以才发帖请教哦,哪里知道它是错误的啊
不知道你是在哪里看到的,但是我们宁可讨论1+1为什么等于2
也不要讨论1+1为什么等于3
简单理解,左边的,返回函数体本身,而且在局部作用域中存在了一个 z = x * y 的值,你可以对调用 abc(x, y) 函数后的返回值继续进行调用,例如:
d = abc(1, 2)
c = d(2, 3)
f = d(2, 3)
但是这样调用应该没什么意义,因为你即没有对外存储、改变数据,又没有在函数内实现有效的逻辑。
右边的就是相对于是无限的自我调用(递归),但是你右侧的代码是有错误的,因为定义了 x y 两个参数,但返回时调用缺没有进行传入
你可以尝试着调用右边的函数,必然会抛出错误。
本帖最后由 lzb1001 于 2023-5-17 08:40 编辑
wp231957 发表于 2023-5-16 15:06
不知道你是在哪里看到的,但是我们宁可讨论1+1为什么等于2
也不要讨论1+1为什么等于3
小甲鱼在第020讲课后作业中有下面这样两题:
a. 请问如何访问 funIn() 呢?
1.def funOut():
2. def funIn():
3. print('宾果!你成功访问到我啦!')
4. return funIn()
直接调用 funOut() 即可:
1.funOut()
2.宾果!你成功访问到我啦!
b. 请问如何访问 funIn() 呢?
1.def funOut():
2. def funIn():
3. print('宾果!你成功访问到我啦!')
4. return funIn
区别于上一题,这里你就需要用 funOut()() 访问啦:
funOut()()
宾果!你成功访问到我啦!
当然你也可以“曲线救国”:
go = funOut()
go()
宾果!你成功访问到我啦!
-------------------------------
上面小甲鱼两个例子的最后一行代码也是一个有括号,一个没有括号
所以我突发奇想了冒出这个奇怪的提问…… lzb1001 发表于 2023-5-17 08:38
小甲鱼在第020讲课后作业中有下面这样两题:
a. 请问如何访问 funIn() 呢?
一个括号而已,看看下面这些啥用也没有的代码
def myadd(a,b):
return a+b
print(myadd(5,6))
def myadd2():
def add(a,b):
return a+b
return add
print(myadd2()(5,6))
def myadd3():
def add():
def add2(a,b):
return a+b
return add2
return add
print(myadd3()()(5,6))
def myadd4():
def add():
def add2():
def add3():
def add4(a,b):
return a+b
return add4
return add3
return add2
return add
print(myadd4()()()()(5,6)) isdkz 发表于 2023-5-16 13:34
左边的那个是返回函数本身,右边那个是返回函数调用的返回值,但是函数定义的时候是需要参数的,那么你调用 ...
……但是函数定义的时候是需要参数的,那么你调用的时候也得传参数
我左右两边都传入参数了啊,但左右两边都返回错误。 lzb1001 发表于 2023-5-17 16:38
……但是函数定义的时候是需要参数的,那么你调用的时候也得传参数
你用了 return abc()
你这叫传入参数了? 看看小甲鱼的闭包视频? isdkz 发表于 2023-5-17 16:41
你用了 return abc()
你这叫传入参数了?
我是说我调用的时候传入了参数了
>>> abc(5, 6)
但左右两边还是都返回了错误了
页:
[1]