python高阶函数

lamaba函数
定义:只能包含一条表达式且直接返回表达式的值
作用:省去函数的命名,可以随时创建和销毁,有利于减少程序的耦合度

fx = lambda n: (n**2+1)%5==0
fx = lambda n: True if (n**2+1)%5==0 else False
lambda x,y: x if x>y else y

eval 函数
作用:把一个字符串当表达式来执行,返回表达式执行后的结果
格式:eval(source, global=None, local=None)

s = '1+2*3'
v = eval(s)# v = 7
print(v)# 7
#================================
x = 100
y = 200
s = "x+y"
v = eval(s) # 300
#=================================
eval('lambda: print("hello")')

exec 函数
作用:把一个字符串当程序来执行,返回表达式执行后的结果
格式:exec(source, global=None, local=None)

s = "x=100\ny=200\nprint(x+y)"
exec(s)# 300

map函数 filter函数

L1 = list(filter(lambda n:n%2==1,range(1,20)))
print(L1)# [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
 L2 = list(map(lambda n:n%2==1,range(1,20)))
print(L2) #[True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True]
# 这里如果用filter的话,说明匿名函数lambda给出的是个筛选条件,从
# 1到19中筛选出奇数来,但这里如果用map的话,就好像变成了它判断
# 对错的条件,只打印true和false。

# 而map一般的用法如下,参数有一个函数一个序列,将右边的序列经
# 过左边的函数变换,生成新的序列。
#==================================#
 L1 = list(map(lambda n:n*n,range(1,20)))
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]

enumerate函数
语法格式:enumerate(iterable, start=0)

l = enumerate("ABC", 100)
print(l) # 
for i in l:
    print(i)
# 结果如下:
# (100, 'A')
# (101, 'B')
# (102, 'C')

你可能感兴趣的:(python高阶函数)