真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python學(xué)習(xí)之函數(shù)式編程

1 函數(shù)式編程

站在用戶的角度思考問題,與客戶深入溝通,找到青縣網(wǎng)站設(shè)計(jì)與青縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋青縣地區(qū)。

1.1 匿名函數(shù)

關(guān)鍵字lambda表示匿名函數(shù),冒號前面的 x 表示參數(shù)。冒號后面只能有一個(gè)表達(dá)式,不寫return,返回值就是該表達(dá)式的結(jié)果。可以不必定義函數(shù)名,直接創(chuàng)建一個(gè)函數(shù)對象。返回函數(shù)的時(shí)候,也可以返回匿名函數(shù)。下面的代碼是一個(gè)例子:

myabs = lambda x : -x if x < 0 else x

myabs(-2)

輸出如下:

2

1.2 返回函數(shù)

Python的函數(shù)不但可以返回int、str、list、dict等數(shù)據(jù)類型,還可以返回函數(shù)!

比如,定義一個(gè)函數(shù) f(),我們讓它返回一個(gè)函數(shù)g,可以這樣寫:

def f():

print('call f()...')

def g(): # 定義函數(shù)g

print('call g()...')

return g # 返回函數(shù)g()

上述代碼中在函數(shù)f()內(nèi)部又定義了一個(gè)函數(shù)g()。由于函數(shù)g() 也是一個(gè)對象,函數(shù)名g()就是指向函數(shù)g()的變量,所以,最外層函數(shù)f()可以返回變量g(),也就是函數(shù)g()本身.調(diào)用函數(shù)f(),我們會得到f()返回的一個(gè)函數(shù):

x = f() # 調(diào)用f()

輸出如下:

call f()...

1.3 閉包

在函數(shù)內(nèi)部定義的函數(shù)和外部定義的函數(shù)是一樣的,只是他們無法被外部訪問:

def g(): # 定義函數(shù)g

print('call g()...')

def f():

print('call f()...')

return g # 返回函數(shù)g()

將g()的定義移入函數(shù)f()內(nèi)部,防止其他代碼調(diào)用g():

def f():

print('call f()...')

def g(): # 定義函數(shù)g

print('call g()...')

return g # 返回函數(shù)g()

像這種內(nèi)層函數(shù)引用了外層函數(shù)的變量(參數(shù)也算變量),然后返回內(nèi)層函數(shù)的情況,稱為閉包Closure。閉包的特點(diǎn)是返回的函數(shù)還引用了外層函數(shù)的局部變量。所以,要正確使用閉包,就要確保引用的局部變量在函數(shù)返回后不能變。

1.4 偏函數(shù)

int()函數(shù)可以把字符串轉(zhuǎn)換為整數(shù)。當(dāng)僅傳入字符串時(shí),int()函數(shù)默認(rèn)按十進(jìn)制轉(zhuǎn)換:

int('98')

輸出如下:

98

函數(shù)還提供額外的base參數(shù),默認(rèn)值為10。如果傳入base參數(shù),就可以做 N 進(jìn)制的轉(zhuǎn)換:

int('100', base = 8)

輸出如下:

64

functools.partial就是創(chuàng)建一個(gè)偏函數(shù)的,可使用下面的代碼創(chuàng)建一個(gè)新的函數(shù):

import functools

int2 = functools.partial(int, base = 2)

int2('1000')

輸出如下:

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

functools.partial可以把一個(gè)參數(shù)多的函數(shù)變成一個(gè)參數(shù)少的新函數(shù),少的參數(shù)需要在創(chuàng)建時(shí)指定默認(rèn)值,函數(shù)調(diào)用的難度就降低了。

1.5 reduce函數(shù)

使用reduce(),需要導(dǎo)入functools包下的reduce:

from functools import reduce

reduce()函數(shù)接收的參數(shù)是一個(gè)函數(shù)f和一個(gè)list,f必須接收兩個(gè)參數(shù)。reduce()對list的每個(gè)元素反復(fù)調(diào)用函數(shù)f,并返回最終結(jié)果值。

下面是一個(gè)函數(shù)f:

def f(x, y):

return x + y

調(diào)用reduce(f, [1, 3, 5, 7, 9])時(shí),reduce函數(shù)將做如下計(jì)算:

先計(jì)算頭兩個(gè)元素:f(1, 3),結(jié)果為4;

再把結(jié)果和第3個(gè)元素計(jì)算:f(4, 5),結(jié)果為9;

再把結(jié)果和第4個(gè)元素計(jì)算:f(9, 7),結(jié)果為16;

再把結(jié)果和第5個(gè)元素計(jì)算:f(16, 9),結(jié)果為25。

reduce()還可以接收第3個(gè)可選參數(shù),作為計(jì)算的初始值。如果把初始值設(shè)為100,計(jì)算:reduce(f, [1, 3, 5, 7, 9], 100),結(jié)果將變?yōu)?25,因?yàn)榈谝惠営?jì)算是:計(jì)算初始值和第一個(gè)元素:f(100, 1),結(jié)果為101。

1.6 filter函數(shù)

filter()函數(shù)接收一個(gè)函數(shù)f和一個(gè)list。函數(shù)f的作用是對每個(gè)元素進(jìn)行判斷,返回 True或 False。filter()根據(jù)判斷結(jié)果自動(dòng)過濾掉不符合條件的元素,返回由符合條件元素組成的新list。

要從一個(gè)list[1, 4, 6, 7, 9, 12, 17]中刪除偶數(shù),保留奇數(shù),首先,要編寫一個(gè)判斷奇數(shù)的函數(shù):

def is_odd(x):

return x % 2 == 1

然后利用filter()函數(shù)過濾掉偶數(shù):

list(filter(is_odd, [1, 4, 6, 7, 9, 12, 17]))

輸出如下:

[1, 7, 9, 17]

利用filter(),可以完成很多有用的功能。例如,刪除None或者空字符串。下面的代碼是一個(gè)判斷字符串是否為空的函數(shù):

def is_not_empty(s):

return s and len(s.strip()) > 0

然后輸入:

list(filter(is_not_empty, ['test', None, '', ' ', 'END']))

輸出為:

['test', 'END']

2 Python學(xué)習(xí)需要注意的點(diǎn)

1、空值為None而不是NULL;

2、True或者False首字母要大寫;

3、print()會依次打印每個(gè)字符串,遇到逗號,的話,會輸出一個(gè)空格。下面的代碼是一個(gè)例子:

print('A', 'B')

輸出如下:

A B

4、Python把0、空字符串’'和None看成 False,其他數(shù)值和非空字符串都看成True。


新聞名稱:Python學(xué)習(xí)之函數(shù)式編程
文章地址:http://weahome.cn/article/ihjeij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部