Python38 传递函数的参数

把函数作为其他函数的参数

像使用变量一样使用这个函数

#定义一个求平方的函数

def squares(x):

return x **2

#在定义一个转换函数

def convert(func,seq):

return [func(eachNum)for eachNumin seq]

#定义一个列表,里面有4个整数,1,2,3,4的数值

num = [4, 3, 2, 1]

#调用转换函数covert,传递两个参数,一个是float函数,一个是num列表,float函数里面的参数来自于num列表中来,  并将调用函数转换后的结果输出

print(convert(float, num))

#调用转换函数covert(),传递两个参数,一个是squares函数,一个是num列表,squares函数里面的参数来自于num列表中,将函数调用的结果输出

print(convert(squares, num))

--------------------------------------------------------------------------------------------------------------------------

#匿名函数也可以,匿名函数,冒号前面是函数的参数,冒号后面是函数体,以关键字lambda开始,

# 将函数运行后的值赋值给变量squares,相当于给函数起了一个别名

squares =lambda x: x **2

#定义一个转换函数,传递两个参数,一个是函数,一个是列表类型的参数

def convert(func,seq):

#返回的结果是将列表里面的数值通过函数func()进行转换

    return [func(eachNum)for eachNumin seq]

#创建一个列表,里面有五个整数,分别是5,6,7,8,9

num = [5, 6, 7, 8, 9]

#调用转换函数,传递的函数是float()转换函数,转换的参数值来自于列表num中,并将函数调用后的结果

print(convert(float,num))

#调用定义的转换函数,传递匿名函数的别名squares,该函数的参数来自于num列表中,并将函数调用的结果输出到屏幕上

print(convert(squares, num))

输出结果为:

[5.0, 6.0, 7.0, 8.0, 9.0]

[25, 36, 49, 64, 81]

-----------------------------------------------------------------------------------------------------

#可以像使用变量一样使用函数

squares =lambda x: x **2

squares2 = squares

print(squares2(2))

print(squares(2))

--------------------------------------------------------------------------------------------------------

#不要给变量和函数同名

num =1

print('[' +str(num) +']')

num =1

str ='Hello'

print('[' + str(num) +']')

运行到时候报错,TypeError: 'str' object is not callable

类型错误:字符串str对象不可以调用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容