一、函式式程式設計
什麼是函式式程式設計?
函式式程式設計並非用函式程式設計這麼簡單,而是將計算機的運算視為數學意義上的運算,比起面向過程,函式式更加注重的是執行結果而非執行的過程,代表語言有: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)
(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...