把函数作为其他函数的参数
像使用变量一样使用这个函数
#定义一个求平方的函数
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对象不可以调用