分别把lambda函数变为普通函数,把make_repeat(n)函数变为lambda函数
def make_repeat(n):return lambda s : s * n
double = make_repeat(2)
print(double(8))
print(double('FishC')
把lambda函数变为普通函数如下:
def make_repeat(n):
def sn(s):
return s * n
double = make_repeat(2)
print(double(8))
print(double('FishC'))
Traceback (most recent call last):
File "C:/Users/Desktop/作业/67.py", line 6, in <module>
print(double(8))
TypeError: 'NoneType' object is not callable
为何会报错?
把make_repeat(n)函数变为lambda函数如下:
lambda n:
return lambda s : s * n
double = make_repeat(2)
print(double(8))
print(double('FishC'))
不能run
你make_repeat都没返回值 本帖最后由 suchocolate 于 2021-9-5 19:08 编辑
# lambda函数
def make_repeat(n=1):
return lambda n : n * 2
double = make_repeat()
print(double(8))
print(double('FishC'))
# lambda函数:高效
double = lambda n : n * 2
print(double(8))
print(double('FishC'))
# 普通函数
def make_repeat(n):
return n * 2
print(make_repeat(8))
print(make_repeat('FishC'))
kogawananari 发表于 2021-9-5 19:01
你make_repeat都没返回值
make_repeat是没有返回值,但是内嵌函数有返回值的,why? suchocolate 发表于 2021-9-5 19:03
def make_repeat(n=1):
return lambda n : n * 2
double = make_repeat()
print(double(8))
print(double('FishC'))
double(8)=make_repeat()(8)= make_repeat(n=1)(8)=lambda 8:8 * 2=16
默认参数是1,为啥make_repeat函数的参数和lambda函数的参数都是n这个变量,为什么? suchocolate 发表于 2021-9-5 19:03
我写的普通函数:
def make_repeat(n):
def sn(s):
return s * n
return sn
double = make_repeat(2)
print(double(8))
print(double('FishC'))
还行吧 suchocolate 发表于 2021-9-5 19:03
我修改的lambda函数的过程:
def make_repeat(n):
return lambda s : s * n
double = make_repeat(2) = lambda s: s * 2
print(double(8))
print(double('FishC')
||
\/
double = lambda s : s * 2
print(double(8))
print(double('FishC'))
Boibot 发表于 2021-9-5 21:14
double(8)=make_repeat()(8)= make_repeat(n=1)(8)=lambda 8:8 * 2=16
默认参数是1,为啥make_repeat ...
1)默认是多少都行,只是为了防止没有代入参数报错。
2)是什么字母都行,没有特定要求。 suchocolate 发表于 2021-9-5 19:03
这是我修改make_repeat函数为普通函数的过程:下面有几处为什么报错?
def make_repeat(n):
def sn(s):
return s * n
return sn
double = make_repeat(2) = return s * 2
print(double(8))
print(double('FishC'))推导过程
def make_repeat(n):
return s * n
n = 2
print(make_repeat(n)(8))
print(make_repeat(n)('FishC')) error
def make_repeat(n)(s):
return s * n
n = 2
print(make_repeat(n)(8))
print(make_repeat(n)('FishC')) error
def make_repeat(n,s):
return s * n
n = 2
print(make_repeat(n,8))
print(make_repeat(n,'FishC'))right
def make_repeat(n=2,s):
return s * n
print(make_repeat(n,8))
print(make_repeat(n,'FishC'))error
def make_repeat(s):
return s * 2
print(make_repeat(8))
print(make_repeat('FishC')) right {:9_240:} 自己顶自己{:9_227:} suchocolate 发表于 2021-9-5 21:50
1)默认是多少都行,只是为了防止没有代入参数报错。
2)是什么字母都行,没有特定要求。
我试了不加默认参数也可以正常运行 本帖最后由 suchocolate 于 2021-9-5 23:00 编辑
Boibot 发表于 2021-9-5 22:14
这是我修改make_repeat函数为普通函数的过程:下面有几处为什么报错?
第6行,return是函数内使用的语句,不能用于普通赋值运算。
建议你仔细学一下函数基础,再去练习这道题。
https://www.runoob.com/python3/python3-function.html
Boibot 发表于 2021-9-5 22:20
我试了不加默认参数也可以正常运行
你确定? suchocolate 发表于 2021-9-5 23:03
你确定?
我说的是这:
def make_repeat(s):
return s * 2
print(make_repeat(8))
print(make_repeat('FishC'))
doublt = make_repeat()这里面的2是默认参数?实参吧? 路过,打酱油 suchocolate 发表于 2021-9-5 22:58
第6行,return是函数内使用的语句,不能用于普通赋值运算。
建议你仔细学一下函数基础,再去练习这道 ...
第6行,我知道,那是我推导的过程,草稿 Boibot 发表于 2021-9-5 23:12
我说的是这:
2不是参数,是函数中的常量。
s是函数的形式参数。
运算时传入的8和FishC是实际参数。 Boibot 发表于 2021-9-5 23:14
第6行,我知道,那是我推导的过程,草稿
那请把你报错的代码贴出来,别贴草稿好吗? 10-14行,s没赋值报错,函数的参数不能用2个括号
16-20行,函数的参数不能用2个括号
30-33行为什么报错?
页:
[1]
2