内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

好的python函數(shù)變量 python函數(shù)對(duì)變量的作用

python 8個(gè)常用內(nèi)置函數(shù)解說

8個(gè)超好用內(nèi)置函數(shù)set(),eval(),sorted(),reversed(),map(),reduce(),filter(),enumerate()

創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、石林網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為石林等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

python中有許多內(nèi)置函數(shù),不像print那么廣為人知,但它們卻異常的強(qiáng)大,用好了可以大大提高代碼效率。

這次來梳理下8個(gè)好用的python內(nèi)置函數(shù)

1、set()

當(dāng)需要對(duì)一個(gè)列表進(jìn)行去重操作的時(shí)候,set()函數(shù)就派上用場了。

用于創(chuàng)建一個(gè)集合,集合里的元素是無序且不重復(fù)的。集合對(duì)象創(chuàng)建后,還能使用并集、交集、差集功能。

2、eval()之前有人問如何用python寫一個(gè)四則運(yùn)算器,輸入字符串公式,直接產(chǎn)生結(jié)果。用eval()來做就很簡單:eval(str_expression)作用是將字符串轉(zhuǎn)換成表達(dá)式,并且執(zhí)行。

3、sorted()在處理數(shù)據(jù)過程中,我們經(jīng)常會(huì)用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時(shí)候就需要用到sorted() ,它可以對(duì)任何可迭代對(duì)象進(jìn)行排序,并返回列表。對(duì)列表升序操作:

對(duì)元組倒序操作:

使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長度來排序:

根據(jù)自定義規(guī)則,對(duì)元組構(gòu)成的列表進(jìn)行排序:

4、reversed()如果需要對(duì)序列的元素進(jìn)行反轉(zhuǎn)操作,reversed()函數(shù)能幫到你。reversed()接受一個(gè)序列,將序列里的元素反轉(zhuǎn),并最終返回迭代器。

5、map()做文本處理的時(shí)候,假如要對(duì)序列里的每個(gè)單詞進(jìn)行大寫轉(zhuǎn)化操作。這個(gè)時(shí)候就可以使用map()函數(shù)。

map()會(huì)根據(jù)提供的函數(shù),對(duì)指定的序列做映射,最終返回迭代器。也就是說map()函數(shù)會(huì)把序列里的每一個(gè)元素用指定的方法加工一遍,最終返回給你加工好的序列。舉個(gè)例子,對(duì)列表里的每個(gè)數(shù)字作平方處理:

6、reduce()前面說到對(duì)列表里的每個(gè)數(shù)字作平方處理,用map()函數(shù)。那我想將列表里的每個(gè)元素相乘,該怎么做呢?這時(shí)候用到reduce()函數(shù)。

reduce()會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積。第一、第二個(gè)元素先進(jìn)行函數(shù)操作,生成的結(jié)果再和第三個(gè)元素進(jìn)行函數(shù)操作,以此類推,最終生成所有元素累積運(yùn)算的結(jié)果。再舉個(gè)例子,將字母連接成字符串。

你可能已經(jīng)注意到,reduce()函數(shù)在python3里已經(jīng)不再是內(nèi)置函數(shù),而是遷移到了functools模塊中。這里把reduce()函數(shù)拎出來講,是因?yàn)樗匾恕?/p>

7、filter()一些數(shù)字組成的列表,要把其中偶數(shù)去掉,該怎么做呢?

filter()函數(shù)輕松完成了任務(wù),它用于過濾序列,過濾掉不符合條件的元素,返回一個(gè)迭代器對(duì)象。filter()函數(shù)和map()、reduce()函數(shù)類似,都是將序列里的每個(gè)元素映射到函數(shù),最終返回結(jié)果。我們?cè)僭囋?,如何從許多單詞里挑出包含字母w的單詞。

8、enumerate()這樣一個(gè)場景,同時(shí)打印出序列里每一個(gè)元素和它對(duì)應(yīng)的順序號(hào),我們用enumerate()函數(shù)做做看。

enumerate翻譯過來是枚舉、列舉的意思,所以說enumerate()函數(shù)用于對(duì)序列里的元素進(jìn)行順序標(biāo)注,返回(元素、索引)組成的迭代器。再舉個(gè)例子說明,對(duì)字符串進(jìn)行標(biāo)注,返回每個(gè)字母和其索引。

Python函數(shù)及變量的定義和使用

def 函數(shù)名():? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ?函數(shù)體? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ?return? 返回值? ? ? ? ? ? ? ? ? ? ? ? ? ??

def 函數(shù)名(非可選參數(shù),可選參數(shù)):

???函數(shù)體?

return 返回值

def 函數(shù)名(參數(shù),*b):

? ? 函數(shù)體

? ? return 返回值

函數(shù)名 = lambda 參數(shù) : 表達(dá)式

例1:f = lambda x , y? :? x + y? ? ? ? ? ? ? ? ? ? ? ??

調(diào)用:f(6 + 8)? ? ?輸出:14? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

例2:?f = lambda : "沒有參數(shù)的lambda函數(shù)!"

調(diào)用:?print(f())? ? 輸出: 沒有參數(shù)的lambda函數(shù)!

解析Python函數(shù)變量如何使用

剛學(xué)用Python的時(shí)候,特別是看一些庫的源碼時(shí),經(jīng)常會(huì)看到func(*args, **kwargs)這樣的函數(shù)定義,這個(gè)*和**讓人有點(diǎn)費(fèi)解。其實(shí)只要把函數(shù)參數(shù)定義搞清楚了,就不難理解了。

先說說函數(shù)定義,我們都知道,下面的代碼定義了一個(gè)函數(shù)funcA

def funcA():

pass

顯然,函數(shù)funcA沒有參數(shù)(同時(shí)啥也不干:D)。

下面這個(gè)函數(shù)funcB就有兩個(gè)參數(shù)了,

def funcB(a, b):

print a

print b

調(diào)用的時(shí)候,我們需要使用函數(shù)名,加上圓括號(hào)擴(kuò)起來的參數(shù)列表,比如 funcB(100, 99),執(zhí)行結(jié)果是:

100

99

很明顯,參數(shù)的順序和個(gè)數(shù)要和函數(shù)定義中一致,如果執(zhí)行funcB(100),Python會(huì)報(bào)錯(cuò)的:

TypeError: funcB() takes exactly 2 arguments (1 given)

我們可以在函數(shù)定義中使用參數(shù)默認(rèn)值,比如

def funcC(a, b=0):

print a

print b

在函數(shù)funcC的定義中,參數(shù)b有默認(rèn)值,是一個(gè)可選參數(shù),如果我們調(diào)用funcC(100),b會(huì)自動(dòng)賦值為0。

OK,目前為止,我們要定義一個(gè)函數(shù)的時(shí)候,必須要預(yù)先定義這個(gè)函數(shù)需要多少個(gè)參數(shù)(或者說可以接受多少個(gè)參數(shù))。一般情況下這是沒問題的,但是也有在定義函數(shù)的時(shí)候,不能知道參數(shù)個(gè)數(shù)的情況(想一想C語言里的printf函數(shù)),在Python里,帶*的參數(shù)就是用來接受可變數(shù)量參數(shù)的??匆粋€(gè)例子

def funcD(a, b, *c):

print a

print b

print "length of c is: %d " % len(c)

print c

調(diào)用funcD(1, 2, 3, 4, 5, 6)結(jié)果是

1

2

length of c is: 4

(3, 4, 5, 6)

我們看到,前面兩個(gè)參數(shù)被a、b接受了,剩下的4個(gè)參數(shù),全部被c接受了,c在這里是一個(gè)tuple。我們?cè)谡{(diào)用funcD的時(shí)候,至少要傳遞2個(gè)參數(shù),2個(gè)以上的參數(shù),都放到c里了,如果只有兩個(gè)參數(shù),那么c就是一個(gè)empty tuple。

好了,一顆星我們弄清楚了,下面輪到兩顆星。

上面的例子里,調(diào)用函數(shù)的時(shí)候,傳遞的參數(shù)都是根據(jù)位置來跟函數(shù)定義里的參數(shù)表匹配的,比如funcB(100, 99)和funcB(99, 100)的執(zhí)行結(jié)果是不一樣的。在Python里,還支持一種用關(guān)鍵字參數(shù)(keyword argument)調(diào)用函數(shù)的辦法,也就是在調(diào)用函數(shù)的時(shí)候,明確指定參數(shù)值付給那個(gè)形參。比如還是上面的funcB(a, b),我們通過這兩種方式調(diào)用

funcB(a=100, b=99)

funcB(b=99, a=100)

結(jié)果跟funcB(100, 99)都是一樣的,因?yàn)槲覀冊(cè)谑褂藐P(guān)鍵字參數(shù)調(diào)用的時(shí)候,指定了把100賦值給a,99賦值給b。也就是說,關(guān)鍵字參數(shù)可以讓我們?cè)谡{(diào)用函數(shù)的時(shí)候打亂參數(shù)傳遞的順序!

另外,在函數(shù)調(diào)用中,可以混合使用基于位置匹配的參數(shù)和關(guān)鍵字參數(shù),前題是先給出固定位置的參數(shù),比如

def funcE(a, b, c):

print a

print b

print c

調(diào)用funcE(100, 99, 98)和調(diào)用funcE(100, c=98, b=99)的結(jié)果是一樣的。

好了,經(jīng)過以上鋪墊,兩顆星總算可以出場了:

如果一個(gè)函數(shù)定義中的最后一個(gè)形參有 ** (雙星號(hào))前綴,所有正常形參之外的其他的關(guān)鍵字參數(shù)都將被放置在一個(gè)字典中傳遞給函數(shù),比如:

def funcF(a, **b):

print a

for x in b:

print x + ": " + str(b[x])

調(diào)用funcF(100, c='你好', b=200),執(zhí)行結(jié)果

100

c: 你好

b: 200

大家可以看到,b是一個(gè)dict對(duì)象實(shí)例,它接受了關(guān)鍵字參數(shù)b和c。

分享名稱:好的python函數(shù)變量 python函數(shù)對(duì)變量的作用
文章起源:http://www.rwnh.cn/article36/dosijsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站設(shè)計(jì)公司微信小程序、服務(wù)器托管做網(wǎng)站、軟件開發(fā)

廣告

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

小程序開發(fā)
镇安县| 沿河| 信丰县| 武义县| 淮北市| 津南区| 电白县| 锡林郭勒盟| 颍上县| 顺平县| 佛山市| 潮安县| 东乡族自治县| 苏州市| 和政县| 郑州市| 长宁县| 南开区| 崇明县| 陇川县| 岑溪市| 宜昌市| 平果县| 丹江口市| 遂平县| 潜山县| 仲巴县| 尼玛县| 元谋县| 栖霞市| 都兰县| 玉田县| 建始县| 亚东县| 东明县| 清河县| 宜都市| 德昌县| 左云县| 彭泽县| 宽城|