欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Pyhton學習之函數(shù)式編程

函數(shù)式編程

公司專注于為企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設、微信公眾號開發(fā)、商城網(wǎng)站開發(fā),成都微信小程序,軟件定制網(wǎng)站設計等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。

面向過程的程序設計

基本單元,函數(shù)

函數(shù)時編程:允許把函數(shù)本身作為參數(shù)傳入另一個函數(shù),還允許返回一個函數(shù)!

高階函數(shù)

abs(-10)是函數(shù)調(diào)用,abs是函數(shù)本身

要獲得調(diào)用結(jié)果,我們可以把結(jié)果賦值給變量

也可以把函數(shù)本身賦給變量,即變量指向函數(shù),這樣可以實現(xiàn)通過變量來調(diào)用函數(shù)

>>> abs

>>> f=abs

>>> f(-10)

10

說明變量f現(xiàn)在已經(jīng)指向了abs函數(shù)本身,直接調(diào)用abs()函數(shù)和調(diào)用f()完全相同

函數(shù)名也是變量

函數(shù)名就是指向函數(shù)的變量,

如果把abs指向其他對象呢?

>>> abs(-2)

Traceback (most recent call last):

File "", line 1, in

TypeError: 'int' object is not callable

指向其他對象后,就暫時沒有原來功能了

傳入函數(shù)

高階函數(shù),在一個函數(shù)中能調(diào)用另一個函數(shù)

map/reduce

map

>> def f(x):

... return x * x

...

>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> list(r)

[1, 4, 9, 16, 25, 36, 49, 64, 81]

map()傳入的第一個參數(shù)是函數(shù)對象f,

L = []

for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]:

L.append(f(n))

print(L)

reduce 看官網(wǎng)吧

filter

正確實現(xiàn)篩選功能

用于過濾序列,例如刪掉偶數(shù)只保留奇數(shù),把一個序列的空字符串去掉

def not_empty(s):

return s and s,strip()

list(filter(not_empty,['A','','B',None ,'c','d']))

#結(jié)果是 ['A','b','c']

sorted(排序算法)

內(nèi)置sorted()函數(shù)可以對list排序

>>> sorted([1,2,7,6,5,4])

[1, 2, 4, 5, 6, 7]

sorted()函數(shù)也是一個高階函數(shù),他還可以接收一個key函數(shù)來實現(xiàn)自定義的排序,例如按照絕對值大小排序

>>> sorted([3,5,-1,-2],key=abs)

[-1, -2, 3, 5]

key指定的函數(shù)將作用在list的每一個元素上,并根據(jù)key函數(shù)返回的結(jié)果進行排序,對比原來的list和經(jīng)過key=abs處理過的lsit:

>>> sorted([3,5,-1,-2],key=abs)

[-1, -2, 3, 5]

然后按照key進行排序

sort也可以給字符串排序

>>> sorted(['bob', 'about', 'Zoo', 'Credit'])

['Credit', 'Zoo', 'about', 'bob']

按照accii碼值來排序的

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)

['about', 'bob', 'Credit', 'Zoo']

要進行反向排序,不必改動key,可以傳入的三個參數(shù)reverse=Ture

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)

['Zoo', 'Credit', 'bob', 'about']

高階函數(shù)的抽象能力是非常強大的,而且核心代碼可以保持非常簡潔

函數(shù)作為返回值

寫完一個求和函數(shù)后,不需要立刻求和,而是在后面的代碼中根據(jù)需要再計算怎么辦,可以不返回求和的結(jié)果,而是返回求和的函數(shù)

返回函數(shù)沒有立刻執(zhí)行,而是在主函數(shù)中調(diào)用了才被執(zhí)行

閉包無錫看婦科的醫(yī)院 http://www.ytsgfk120.com/

在IDLE中寫程序的時候要在最后加上print(),因為他不是交互環(huán)境!!!

def count():

fs = []

for i in range(1, 4):

def f():

return i*i

fs.append(f)

return fs

f1,f2,f3= count()#借用count來調(diào)用函數(shù)!!!

print(f1())

print(f2())

print(f3())

牢記:

返回函數(shù)不要引用任何的循環(huán)變量,或者后續(xù)會發(fā)生變化的變量

如果一定要引用循環(huán)變量,需要再創(chuàng)建一個函數(shù),用該函數(shù)的參數(shù)綁定循環(huán)變量的值

def count():

def f(j):

def g():

return j*j

return g

fs=[]

for i in range(1,4):

fs.append(f(i))#f立刻被執(zhí)行,因此i的當前值被傳入f()

return fs

f1,f2,f3 = count()

print(f1())

print(f2())

缺點:代碼較長,可利用lambda函數(shù)縮短代碼

小結(jié):

一個函數(shù)可以返回一個計算結(jié)果,也可以返回一個函數(shù)。

返回一個函數(shù)時,牢記該函數(shù)并未執(zhí)行,返回函數(shù)中不要引用任何可能會變化的量。

匿名函數(shù)

好處:因為函數(shù)沒有名字,不必擔心函數(shù)名沖突

沒有return語句

s=list(map(lambda x:x*x,[1,2,3,4,5,6,7,8,9]))

print(s)

實際上就是

def f(x):

return x*x

關鍵字lambda表示匿名函數(shù),冒號前面的x表示函數(shù)參數(shù)

匿名函數(shù)有個限制,就是只能有一個表達式,不用寫return語句,返回值就是該表達式的結(jié)果

匿名函數(shù)也是一個函數(shù)對象,可以把匿名函數(shù)賦給一個變量,再利用變量+參數(shù) 來調(diào)用函數(shù),

f=lambda x:x*x

print(f(4))

可以把匿名函數(shù)作為返回值返回

裝飾器

在代碼運行期間動態(tài)增加功能的方式,稱之為“裝飾器”decoator

偏函數(shù)

int轉(zhuǎn)換其他類型的時候,默認按十進制轉(zhuǎn)換

要想轉(zhuǎn)化為二進制 int(x,base=2)

如果嫌一直寫太麻煩,可以定義一個函數(shù)啊

def int2(x,base=2):

return int(x,base)

偏函數(shù)

functools.partial幫助我們創(chuàng)建一個偏函數(shù),不需要我們自己定義int2(),可以直接使用下面的代碼創(chuàng)建一個新的函數(shù)

import functools

int2=functools.partial(int base=2)

int2('100000')

64

funtools.partial的作用就是,把一個函數(shù)的某些參數(shù)給固定住(也就是設置默認值),返回一個新的函數(shù),調(diào)用這個新函數(shù)會更簡單。

小結(jié):

當函數(shù)的參數(shù)過多,需要簡化時,使用functools.partial可以創(chuàng)建一個新的函數(shù),這個新函數(shù)可以固定住原函數(shù)的部分參數(shù),從而在調(diào)用的時候更簡單。

文章標題:Pyhton學習之函數(shù)式編程
鏈接分享:http://chinadenli.net/article42/ihojec.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航定制網(wǎng)站網(wǎng)站營銷搜索引擎優(yōu)化軟件開發(fā)外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名