日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

Python笔记(2)函数

發(fā)布時(shí)間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python笔记(2)函数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python中一切皆對(duì)象,函數(shù)也看做對(duì)象。函數(shù)被函數(shù)名所引用,但是同樣的他也可以被其他標(biāo)識(shí)符所引用,可以作為參數(shù)傳遞。

def f():return "hi"

可見(jiàn)a引用了函數(shù)返回值,b引用了函數(shù)本身,a不可調(diào)用,b可調(diào)用。而函數(shù)作為參數(shù),即引用函數(shù)本身,下面的裝飾器就是以函數(shù)作為參數(shù),引用的函數(shù)本身,而不是返回值。

常用的幾個(gè)內(nèi)建函數(shù)Map,Reduce,Filter,lamda。

Filter

篩選出滿足過(guò)濾條件的元素

s = "@431$%$314&6i7(431)^&^%2l#%^i6861642k765e&$%65%^$^#$p%^&*%66757y%*^&%th%*&^%&^$o$&*^n4637"
print filter(str.isalpha,s)

Map

  接收兩個(gè)參數(shù),第一個(gè)是函數(shù),第二個(gè)是list,返回結(jié)果

l = [random.randint(0,100) for i in range(10)]def sub50(a):return a-50print map(sub50,l)

Reduce?

和map一樣接收兩個(gè)參數(shù),但是他返回一個(gè)結(jié)果,會(huì)迭代第二個(gè)參數(shù)list,不停的計(jì)算。

# 1+2+3+...+99
def f_add(a,b):return a+b
print reduce(f_add,range(1,100))

  python3中Reduce被從全局命名空間中移除,要想使用需要--from functools import reduce,在函數(shù)式中reduce所表達(dá)的概念稱為規(guī)約fold。

?這里的map reduce和大數(shù)據(jù)中的map reduce不是一回事。

Lambda

lambda就是一個(gè)匿名函數(shù),在需要一個(gè)函數(shù),但是不用費(fèi)力起名字的時(shí)候用lambda.

map(lambda x:x*x, [x for x in range(10)])
##等價(jià)于
def pf(x):return x * xmap(pf, [x for x in range(10)])

map,filter,reduce并沒(méi)有列表解析容易理解,3里面返回的是一個(gè)iterator而不再是一個(gè)list。

回調(diào) CallBack?也即函數(shù)作為參數(shù),運(yùn)行到callback()返回上一層

閉包c(diǎn)losure

綁定外部變量的函數(shù)

閉包和裝飾器 都是函數(shù)作為返回值

def pow_x(x):def echo(value):return value**xreturn echolst = [pow_x(2),pow_x(3),pow_x(4)]
for p in lst:print "closure",p(2)

1.嵌套函數(shù)

2.內(nèi)部函數(shù)用了外部變量

3.外部函數(shù)返回了內(nèi)部函數(shù)

如果外部變量是list,是可以改變的。但是只是一個(gè)變量,是無(wú)法改變的。

函數(shù)內(nèi)部要注意LEGB原則,有局部變量的時(shí)候,就不再調(diào)用外部變量。

裝飾器decorator

裝飾就是在原有函數(shù)的基礎(chǔ)上,加一些其他的功能,他是函數(shù)作為返回值,函數(shù)作為參數(shù)的一種應(yīng)用。

多層嵌套就是用了閉包,被修飾函數(shù)作為綁定量。

兩層嵌套結(jié)構(gòu)

目標(biāo)函數(shù)可以帶參數(shù)

def time_cost(f):def _f(*arg, **kwarg):start = time.clock()a=f(*arg,**kwarg)end = time.clock()print f.__name__,"run cost time is ",end-startreturn areturn _f@time_cost
def list_comp(length):return [(x,y) for x in range(length) for y in range(length) if x*y > 25]if __name__ == '__main__':list_comp(1000)

  

三層嵌套結(jié)構(gòu)

不僅目標(biāo)函數(shù)可以帶參數(shù),裝飾器也可以帶參數(shù)

遞歸

遞歸就是1)函數(shù)自己調(diào)用自己2)有明確的出口。常用于Fibonacci數(shù)列,樹(shù)圖的遍歷等數(shù)據(jù)或是結(jié)構(gòu)上定義為遞歸的情況。遞歸和循環(huán)是等價(jià)的。

遞歸的次數(shù)過(guò)多,會(huì)造成棧溢出,并且Python并不支持尾遞歸優(yōu)化。

#字符串取反
def reverse_str(s):if len(s) <= 1:return selse:return reverse_str(s[1:]) + s[0]

  

?

轉(zhuǎn)載于:https://www.cnblogs.com/zephyr-1/p/5489303.html

總結(jié)

以上是生活随笔為你收集整理的Python笔记(2)函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。