Python語(yǔ)言中的重要函數(shù)對(duì)象用法小結(jié)
高級(jí)函數(shù)對(duì)象
lambda函數(shù)
python使用lambda來(lái)創(chuàng)建匿名函數(shù)。所謂匿名函數(shù),就是不再使用像def語(yǔ)句這樣標(biāo)準(zhǔn)的形式定義函數(shù)。
lambda [arg1,[arg2,...argn]]:expression
使用lambda函數(shù)的語(yǔ)法定義函數(shù),需要注意以下兩點(diǎn):
- 冒號(hào)之前的arg1,arg2,…表示他們是這個(gè)函數(shù)的參數(shù)
- 匿名函數(shù)不需要return來(lái)返回值,表達(dá)式本身的結(jié)果就是返回值
定義匿名函數(shù)
sayHello = lambda : print("hello,python")
sayHello()使用lambda函數(shù)實(shí)現(xiàn)兩數(shù)相加
sum = lambda arg1,arg2 : arg1+arg2;
print('相加后的值:',sum(10,20))
print('相加后的值:',sum(20,20))map()函數(shù)
map()函數(shù)是python內(nèi)置的高階函數(shù),會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射,第一個(gè)參數(shù)function是個(gè)函數(shù)對(duì)序列中每個(gè)元素都調(diào)用function函數(shù),返回包含每次function函數(shù)返回值的新序列
map(function,iterable,...)
- function: 是個(gè)函數(shù),通過(guò)函數(shù)依次作用在序列中的每個(gè)元素中。
- iterable: 一個(gè)或多個(gè)序列,也被稱為可迭代對(duì)象。
對(duì)列表中每個(gè)元素平方
def fun(x):
return x*x
result=map(fun,[1,2,3])
print(list(result))對(duì)列表中每個(gè)元素加3
result=map(lambda x: x+3,[1,3,5,6]) print(list(result))
兩個(gè)列表的每個(gè)元素實(shí)現(xiàn)相加
result=map((lambda x,y:x+y),[1,2,3],[6,7,9]) print(list(result))
reduce()函數(shù)
reduce(function,iterable)
- function: 接收函數(shù),必須有兩個(gè)參數(shù)
- iterable: 一個(gè)或多個(gè)序列,序列也稱為迭代對(duì)象
使用reduce()函數(shù)對(duì)列表中的元素進(jìn)行累加
from functools import reduce
def add(x,y):
return x+y
data = [1,2,3,4]
r=reduce(add,data)
print(r)from functools import reduce data=[1,2,3,4] fun=lambda x,y:x+y r2=reduce(fun,data) print(r2)
該計(jì)算相當(dāng)于(((1+2)+3)+4)=10
迭代器
迭代器是訪問(wèn)集合元素的一種方式。迭代器對(duì)象從集合的第一個(gè)元素開(kāi)始訪問(wèn),直到所有元素被訪問(wèn)完結(jié)束。迭代器只能往前不能后退。
使用迭代器
lst=[1,2,3,4] it=iter(lst) print(next(it)) print(next(it)) print(next(it))
自定義迭代器
對(duì)于要返回迭代器的類,迭代器對(duì)象被要求支持下面兩個(gè)魔法方法
(1)iter()返回迭代器本身。
(2)next()返回容器的下一個(gè)元素的值。
斐波那契數(shù)列
def fib(max):
a,b=1,1
idx=0
ls=[]
while True:
if idx==max:
return ls
ls.append(a)
a,b=b,a+b
idx=idx+1
if __name__=="__main__":
result = fib(5)
print(result)自定義迭代器實(shí)現(xiàn)斐波那契數(shù)列
class Fibs(object):
def __init__(self,max):
self.max=max
self.a=0
self.b=1
self.idx=0
def __iter__(self):
return self
def __next__(self):
fib=self.a
if self.idx==self.max:
raise StopIteration
self.idx=self.idx+1
self.a,self.b=self.b,self.a+self.b
return fib
if __name__=='__main__':
fibs=Fibs(5)
print(list(fibs))生成器
生成器是迭代器的一種實(shí)現(xiàn)。生成器不會(huì)把結(jié)果保存在一個(gè)系列中,而是保存生成器的狀態(tài),在每次進(jìn)行迭代時(shí)返回一個(gè)值,直到遇到StopIteration異常時(shí)結(jié)束。
生成器的好處是延遲計(jì)算,一次返回一個(gè)結(jié)果。它不會(huì)一次生成所有的結(jié)果,這對(duì)于處理大數(shù)據(jù)量會(huì)非常有用。
生成器函數(shù)
在函數(shù)中如果出現(xiàn)了yield關(guān)鍵字,那么該函數(shù)就不再是普通函數(shù),而是生成器函數(shù)。
使用yield語(yǔ)句而不是return語(yǔ)句返回結(jié)果。yield語(yǔ)句一次返回一個(gè)結(jié)果,在每個(gè)結(jié)果中間掛起函數(shù)的狀態(tài),以便下次從它離開(kāi)的地方繼續(xù)執(zhí)行。
簡(jiǎn)單的生成器函數(shù)
def mygen():
print('gen() 1')
yield 1
print('gen() 2')
yield 2
print('gen() 3')
yield 3
gen =mygen()
print(next(gen))
print(next(gen))
print(next(gen))使用生成器函數(shù)生成一個(gè)含有n個(gè)奇數(shù)的生成器,使用for語(yǔ)句迭代輸出
def odd(max):
n=1
count = 0
while True:
yield n
n+=2
count=count+1
if count == max:
raise StopIteration
odd_num=odd(3)
for num in odd_num:
print(num)迭代器同樣的效果
class odd(object):
def __init__(self,max):
self.count=0
self.max=max
self.start=-1
def __iter__(self):
return self
def __next__(self):
self.start+=2
self.count=self.count+1
if self.count==self.max:
raise StopIteration
return self.start
odd_num=odd(3)
for num in odd_num:
print(num)使用生成器生成斐波那契數(shù)列
def Fibs(max):
a,b=1,1
count=0
while True:
if count == max:
raise StopIteration
yield a
a,b=b,a+b
count=count+1
if __name__=="__main__":
fib=Fibs(5)
for item in fib:
print(item)裝飾器
裝飾器本質(zhì)是一個(gè)python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動(dòng)的前提下增加額外的功能,裝飾器的返回值也是一個(gè)函數(shù)對(duì)象。
簡(jiǎn)單的裝飾器
先定義兩個(gè)簡(jiǎn)單的數(shù)學(xué)函數(shù)
def add(a,b):
return a+b
def subtraction(a,b):
return a-b
a=5
b=1
print('{0}+{1}={2}'.format(a,b,add(a,b)))
print('{0}-{1}={2}'.format(a,b,subtraction(a,b)))def decorator(func):
def inner(a,b):
print('輸入?yún)?shù) a={0},b={1}'.format(a,b))
f1=func(a,b)
return f1
return inner
@decorator
def add(a,b):
return a+b
@decorator
def subtraction(a,b):
return a-b
a=5
b=1
print('{0}+{1}={2}'.format(a,b,add(a,b)))
print('{0}-{1}={2}'.format(a,b,subtraction(a,b)))使用裝飾器傳遞參數(shù)
def pre_str(pre=''):
def decorator(func):
def inner(a,b):
print('裝飾器參數(shù) pre={0}'.format(pre))
print('輸入?yún)?shù) a={0},b={1}'.format(a,b))
f1=func(a,b)
return f1
return inner
return decorator
@pre_str('add')
def add(a,b):
return a+b
@pre_str('subtraction')
def subtraction(a,b):
return a-b
a=5
b=1
print('{0}+{1}={2}'.format(a,b,add(a,b)))
print('{0}-{1}={2}'.format(a,b,subtraction(a,b)))基于類的裝飾器
class Test():
def __init__(self,func):
self.func=func
def __call__(self, *args, **kwargs):
print('The current function:%s' % self.func.__name__)
return self.func
@Test
def test1():
print("Hello")
test1()到此這篇關(guān)于Python語(yǔ)言中的重要函數(shù)對(duì)象用法的文章就介紹到這了,更多相關(guān)Python函數(shù)對(duì)象用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的區(qū)別
本文主要介紹了OpenCV cv2.imread(),cv2.imshow(),cv2.imwrite()的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
Python 實(shí)現(xiàn)12306登錄功能實(shí)例代碼
這篇文章主要介紹了Python 實(shí)現(xiàn)12306登錄功能的完整代碼,需要的朋友可以參考下2018-02-02
使用Python實(shí)現(xiàn)音頻文件的分布式處理
隨著音頻數(shù)據(jù)量的不斷增長(zhǎng),傳統(tǒng)的單機(jī)處理方式已經(jīng)難以滿足大規(guī)模音頻處理的需求,分布式處理技術(shù)通過(guò)將任務(wù)分解并分配到多個(gè)計(jì)算節(jié)點(diǎn)上,可以顯著提高處理速度和效率,本文將深入探討如何使用Python實(shí)現(xiàn)音頻文件的分布式處理,需要的朋友可以參考下2025-12-12
Python如何通過(guò)ARIMA模型進(jìn)行時(shí)間序列分析預(yù)測(cè)
這篇文章主要介紹了Python如何通過(guò)ARIMA模型進(jìn)行時(shí)間序列分析預(yù)測(cè)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Python基于回溯法子集樹(shù)模板解決旅行商問(wèn)題(TSP)實(shí)例
這篇文章主要介紹了Python基于回溯法子集樹(shù)模板解決旅行商問(wèn)題(TSP),簡(jiǎn)單描述了旅行商問(wèn)題并結(jié)合實(shí)例形式分析了Python使用回溯法子集樹(shù)模板解決旅行商問(wèn)題的相關(guān)實(shí)現(xiàn)步驟與操作技巧,需要的朋友可以參考下2017-09-09
Python如何使用EasyOCR工具識(shí)別圖像文本
EasyOCR?是?PyTorch?實(shí)現(xiàn)的一個(gè)光學(xué)字符識(shí)別?(OCR)?工具,這篇文章主要介紹了Python如何使用EasyOCR工具識(shí)別圖像文本,需要的朋友可以參考下2023-04-04
springboot配置文件抽離 git管理統(tǒng) 配置中心詳解
在本篇文章里小編給大家整理的是關(guān)于springboot配置文件抽離 git管理統(tǒng) 配置中心的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2019-09-09
Python文件管理器開(kāi)發(fā)之文件遍歷與文檔預(yù)覽功能實(shí)現(xiàn)教程
在現(xiàn)代辦公環(huán)境中,我們經(jīng)常需要快速瀏覽大量的文檔文件,本文將詳細(xì)介紹如何使用Python和wxPython開(kāi)發(fā)一個(gè)功能完善的文件管理器,重點(diǎn)講解文件遍歷和文檔預(yù)覽功能的核心實(shí)現(xiàn)原理2025-09-09
Pytorch如何打印與Keras的model.summary()類似的輸出(最新推薦)
這篇文章主要介紹了Pytorch如何打印與Keras的model.summary()類似的輸出,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07

