Python的函式式程式設計

2022-06-26 13:03:07 字數 2862 閱讀 6614

一、函式式程式設計

什麼是函式式程式設計?

函式式程式設計並非用函式程式設計這麼簡單,而是將計算機的運算視為數學意義上的運算,比起面向過程,函式式更加注重的是執行結果而非執行的過程,代表語言有:haskell、erlang。而python並不是一門函式式程式語言,但是仍為我們提供了很多函式式程式設計好的特性,如lambda,map,reduce,filter

#

匿名函式

#1、def用於定義有名函式

#func = 函式的記憶體位址

#def func(x,y):

#return x + y

#print(func) #

#2、lambda用於定義匿名函式 目的:精簡.不要寫return

#lambda x,y:x+y

#print(lambda x,y:x+y) # at 0x000001e2154d9670>

#3、呼叫匿名函式##

res = (lambda x,y:x+y)(1,2)

#print(res) # 3

#方式二:匿名函式的就是沒有名字,不要這樣做了。

func = lambda x,y:x+y

res = func(1,2)

print

(res)

#

#

匿名函式的應用

salaries =

#需求1:找出薪資最高的那個人

#使用max()函式取出最大值

#res = max([3,343,35,63,3,3,2,21])

#print(res) # 343

#迭代出的內容 比較的值

#'siry' 3000

#'tom' 7000

#'lili' 10000

#'jack' 2000

#res = max(salaries)

#print(res) # 為啥是tom?比較的是名字首字母

#使用key值比較

#def func(k):

#return salaries[k]

#res = max(salaries,key=func) # 返回值=func('siry')

#print(res) # lili

#針對func設計成匿名函式

res = max(salaries,key=lambda

k:salaries[k])

print(res)

#

排序:關鍵字sorted()的使用,

salaries =

res = sorted([1,2,3,42,14,1,41,4])

print(res) #

[1, 1, 2, 3, 4, 14, 41, 42]

res1 =sorted(salaries)

print(res1) #

['jack', 'lili', 'siry', 'tom ']

res = sorted(salaries,key=lambda

k:salaries[k])

print(res) #

按工資排序:['jack', 'siry', 'tom', 'lili']

#

排序:關鍵字sorted()的使用,

#salaries =

#res = sorted([1,2,3,42,14,1,41,4])

#print(res) # [1, 1, 2, 3, 4, 14, 41, 42]##

res1 = sorted(salaries)

#print(res1) # ['jack', 'lili', 'siry', 'tom']

# reverse有個預設值,可以改變排列順序

#res = sorted(salaries,key=lambda k:salaries[k],reverse=true)

#print(res) # 按工資排序:['jack', 'siry', 'tom', 'lili']

#對映:map()關鍵字的使用(了解)

#l = ['lsj','tiantian','tianjing','wenying']

## 列表生成式

#new_l = (name + '_n' for name in l)

#print(new_l) # at 0x00000298321cf6d0>##

res= map(lambda name:name+'_n',l)

#print(res) # # 生成器:

#過濾器:filter的應用(了解)

#l = ['lsj_n','tiantian','tianjing_n','wenying']

#res = (name for name in l if name.endswith('n'))

#print(res) # at 0x000002279b26f660>

#res = filter(lambda name:name.endswith('n'),l)

#print(res) # 與上面的類似生成乙個迭代器:

#reduce()的應用,多用於合併操作(了解)

from functools import

reduce

res = reduce(lambda x,y:x+y,[1,2,3],10) #

11 13 16

print(res) #

16res = reduce(lambda x,y:x+y,['

a','

b','

c']) #

11 13 16

print(res) #

abc

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...

python的函式式程式設計

一 高階函式 即函式的引數能接收別的函式 def add x,y,f return f x f y print add 5,6,abs 11內建函式 filter 函式 用於過濾序列 接受乙個函式與乙個序列 filter 的作用是從乙個序列中篩出符合條件的元素。由於filter 使用了惰性計算,所以...

Python函式式程式設計

python函式式程式設計的核心思想是 把函式當資料.所以,函式可以用作函式引數,函式返回值,元組或字典成員等 閉包閉包是實現 復用的一種途徑,與類不同的是它基於函式實現.函式與它的環境變數一起就構成了閉包,閉包只有乙個返回值,那就是閉包中的函式 def line conf a,b def line...