咱們以前定義的函數都是有名函數,它是基於函數名使用的。函數
def func(): print('from func') func() func() func() print(func) #輸出: from func from func from func <function func at 0x0000026B60E47048>
匿名函數。他沒有綁定名字,使用一次即被收回,加括號便可以運行。code
print(lambda x,y:x+y) #輸出: <function <lambda> at 0x0000027D6A837048>
res = (lambda x,y:x+y)(1,2) print(res) #輸出: 3
匿名函數一般與max(),sorted(),filter(),sorted()方法聯用。對象
salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000 } print(f"max(salary_dict): {max(salary_dict)}") def func(k): return salary_dict[k] print(f"max(salary_dict, key=func()): {max(salary_dict, key=func)}") print(max(salary_dict, key=lambda name: salary_dict[name])) #輸出: max(salary_dict): tank max(salary_dict, key=func()): jason jason
若是咱們想對上述字典中的人,按照薪資從大到小排序,能夠使用sorted()方法。排序
sorted()工做原理:it
lis = [1,3,2,5,8,6] sorted(lis) print(lis) print(sorted(lis,reverse=True)) #輸出: [1, 3, 2, 5, 8, 6] [8, 6, 5, 3, 2, 1]
salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000 } print(sorted(salary_dict, key=lambda name: salary_dict[name])) #輸出: ['sean', 'nick', 'tank', 'jason']
若是咱們想對一個列表中的某一我的民作處理,能夠使用map()方法。io
map()工做原理。function
name_list = ['jason','tank','sean'] res = map(lambda name:f"{name} sb",name_list) print(f"list(res):{list(res)}") #輸出: list(res):['jason sb', 'tank sb', 'sean sb']
若是咱們想要篩選除名字中含有‘sb'的名字,咱們能夠使用filter()方法。class
filter()工做原理:匿名函數
name_list=['nick','jason sb','tank sb','sean sb'] filter_res = filter(lambda name:name.endswith('sb'),name_list) print(list(filter_res)) #輸出: ['jason sb', 'tank sb', 'sean sb']