1. 程式人生 > 其它 >python函式之匿名函式和麵向過程程式設計

python函式之匿名函式和麵向過程程式設計

匿名函式

什麼是匿名函式?
  匿名函式就是沒有名字的函式

為何要用匿名函式?
  用於臨時使用一次的場景

如何定義匿名函式
  lambda 引數 :返回值

有名函式與匿名函式的對比

有名函式:迴圈使用,儲存了名字,通過名字就可以重複引用函式功能

匿名函式:一次性使用,隨時隨時定義

匿名函式一般與內建函式搭配使用:max,min,sorted,map,reduce,filter等內建函式
下面以薪資為例將匿名函式與max、min、sorted配合使用講解下

salaries = {
    "axx": 30000000,
    "bgon": 3000,
    "zxx": 1000
}
print(max(salaries,key=lambda name:salaries[name])) # 與max最大值配合使用
print(min(salaries,key=lambda name:salaries[name])) # 與min最小值配合使用
print(sorted(salaries,key=lambda name:salaries[name])) # 與sorted排序配合使用,從小到大排序value

匿名函式與reduce配合使用

函式的作用是將一個序列歸納為一個輸出
  from functools import reduce   #先從functools模組中匯出reduce功能函式
  reduce(function, sequence, startValue)
          函式名     按照一個條件  初始值
    from functools import reduce   #先從functools模組中匯出reduce功能函式
    res = reduce(lambda x, y: x + y, [1, 2, 3, 4],10)  #數字求和
    res = reduce(lambda x, y: x + y, ["a", "b", "c", "d"], "xxx")  #字串拼接
    print(res)

匿名函式與map配合使用

新增某種條件對映成一個新列表
  names = ['lxx', "hxx", "wxx"]
  res = map(lambda name:name+"_vip",names)
  print(res)

匿名函式與filter配合使用

過濾出想要的東西
  names = ['lxx', "hxx_vip", "wxx_vip"]
  res=filter(lambda name:name.endswith('_vip'),names)
  print(res)

面向過程程式設計

什麼是面向過程程式設計
    面向過程的核心是過程二字,過程指的是解決問題的步驟,即先幹什麼再幹什麼
    基於面向過程設計程式就好比在設計一條流水線,是一種機械式的思維方式

優點:複雜的問題流程化,進而簡單化

缺點:可擴充套件性差,修改流水線的任意一個階段,都會牽一髮而動全身

應用:擴充套件性要求不高的場景,典型案例如linux核心,git,httpd