AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

Python庫functools示例詳解

來源: 責(zé)編: 時間:2024-04-28 17:20:09 172觀看
導(dǎo)讀functoolsfunctools 是 Python 標(biāo)準(zhǔn)庫中一個極為實(shí)用的模塊,提供了許多用于處理函數(shù)、高階函數(shù)以及函數(shù)式編程的工具。1. functools.partial用途: 創(chuàng)建一個新函數(shù),它固定了原函數(shù)的部分參數(shù)。示例:from functools impor

functools

MrO28資訊網(wǎng)——每日最新資訊28at.com

functools 是 Python 標(biāo)準(zhǔn)庫中一個極為實(shí)用的模塊,提供了許多用于處理函數(shù)、高階函數(shù)以及函數(shù)式編程的工具。MrO28資訊網(wǎng)——每日最新資訊28at.com

1. functools.partial

用途: 創(chuàng)建一個新函數(shù),它固定了原函數(shù)的部分參數(shù)。MrO28資訊網(wǎng)——每日最新資訊28at.com

示例:MrO28資訊網(wǎng)——每日最新資訊28at.com

from functools import partialdef power(base, exponent):    return base ** exponent# 創(chuàng)建一個固定底數(shù)為2的新函數(shù)square = partial(power, base=2)# 調(diào)用新函數(shù)只需傳遞指數(shù)print(square(3))  # 輸出: 8

2. functools.update_wrapper / functools.wraps

用途: 在編寫裝飾器時,保持被裝飾函數(shù)的元信息(如名稱、文檔字符串、注解等)不變。MrO28資訊網(wǎng)——每日最新資訊28at.com

示例:MrO28資訊網(wǎng)——每日最新資訊28at.com

from functools import wrapsdef add_logging(func):    @wraps(func)    def wrapper(*args, **kwargs):        print(f"Calling {func.__name__} with arguments {args}, {kwargs}")        result = func(*args, **kwargs)        print(f"{func.__name__} returned: {result}")        return result    return wrapper@add_loggingdef greet(name):    """Greet someone by their name."""    return f"Hello, {name}!"print(greet.__name__)  # 輸出: greetprint(greet.__doc__)   # 輸出: Greet someone by their name.greet("Alice")  # 輸出: Calling greet with arguments ('Alice',), {} 和 "greet returned: Hello, Alice!"

3. functools.total_ordering

用途: 通過實(shí)現(xiàn)一個或少數(shù)幾個關(guān)鍵比較方法(如 __eq__ 和 __lt__),自動為一個類生成所有必要的比較方法(如 __le__, __gt__, __ge__, __ne__)。MrO28資訊網(wǎng)——每日最新資訊28at.com

示例:MrO28資訊網(wǎng)——每日最新資訊28at.com

from functools import total_ordering@total_orderingclass Person:    def __init__(self, name, age):        self.name = name        self.age = age    def __eq__(self, other):        return self.name == other.name and self.age == other.age    def __lt__(self, other):        return self.age < other.age# 自動擁有所有比較方法,如 __le__, __gt__, __ge__, __ne__p1 = Person("Alice", 25)p2 = Person("Bob", 30)print(p1 <= p2)  # 輸出: Trueprint(p1 > p2)   # 輸出: False

4. functools.lru_cache

用途: 實(shí)現(xiàn)函數(shù)結(jié)果的緩存,以提高性能。基于“最近最少使用”(Least Recently Used, LRU)策略自動丟棄舊的緩存項(xiàng)。MrO28資訊網(wǎng)——每日最新資訊28at.com

示例:MrO28資訊網(wǎng)——每日最新資訊28at.com

from functools import lru_cache@lru_cache(maxsize=32)def fibonacci(n):    if n < 2:        return n    return fibonacci(n - 1) + fibonacci(n - 2)# 多次調(diào)用相同參數(shù)時,從緩存中獲取結(jié)果,避免重復(fù)計(jì)算print(fibonacci(20))  # 第一次調(diào)用進(jìn)行計(jì)算print(fibonacci(20))  # 第二次調(diào)用直接使用緩存

5. functools.reduce

用途: 對一個可迭代對象(如列表)應(yīng)用一個累積函數(shù),從左到右將元素兩兩結(jié)合,返回單一結(jié)果。MrO28資訊網(wǎng)——每日最新資訊28at.com

示例:MrO28資訊網(wǎng)——每日最新資訊28at.com

from functools import reducenumbers = [1, 2, 3, 4, 5]# 計(jì)算列表元素的乘積product = reduce(lambda x, y: x * y, numbers)print(product)  # 輸出: 120

6. functools.cmp_to_key

用途: 將舊式的比較函數(shù)(接受兩個參數(shù)并返回負(fù)數(shù)、零或正數(shù)表示小于、等于或大于)轉(zhuǎn)換為可用于排序的鍵函數(shù)。MrO28資訊網(wǎng)——每日最新資訊28at.com

示例:MrO28資訊網(wǎng)——每日最新資訊28at.com

from functools import cmp_to_keydef compare_names(name1, name2):    if name1 < name2:        return -1    elif name1 > name2:        return 1    else:        return 0names = ["Alice", "Bob", "Charlie", "David"]# 使用舊式比較函數(shù)進(jìn)行排序sorted_names = sorted(names, key=cmp_to_key(compare_names))print(sorted_names)  # 輸出: ['Alice', 'Bob', 'Charlie', 'David']

以上示例

涵蓋了 functools 模塊中一些常用且重要的功能,包括部分函數(shù)應(yīng)用、裝飾器元信息保留、簡化類比較方法、函數(shù)緩存、累積計(jì)算以及舊式比較函數(shù)的轉(zhuǎn)換。根據(jù)實(shí)際需求,可以靈活運(yùn)用這些工具來增強(qiáng)代碼的簡潔性、效率和可讀性。MrO28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-86210-0.htmlPython庫functools示例詳解

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python 處理圖片的十個庫

下一篇: C++函數(shù)傳遞二維數(shù)組的三種方法

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 5月iOS設(shè)備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發(fā)布的iOS設(shè)備性能榜的上榜設(shè)備并沒有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動,剛剛開始的蘋果WWDC2023,推出的產(chǎn)品也依舊是新款Mac Pro、新款Mac Stu
  • 一加首款折疊屏!一加Open渲染圖出爐:罕見單手可握小尺寸

    8月5日消息,此前就有爆料稱,一加首款折疊屏手機(jī)將會在第三季度上市,如今隨著時間臨近,新機(jī)的各種消息也開始浮出水面。據(jù)悉,這款新機(jī)將會被命名為&ldquo;On
  • 28個SpringBoot項(xiàng)目中常用注解,日常開發(fā)、求職面試不再懵圈

    前言在使用SpringBoot開發(fā)中或者在求職面試中都會使用到很多注解或者問到注解相關(guān)的知識。本文主要對一些常用的注解進(jìn)行了總結(jié),同時也會舉出具體例子,供大家學(xué)習(xí)和參考。注解
  • 2023 年的 Node.js 生態(tài)系統(tǒng)

    隨著技術(shù)的不斷演進(jìn)和創(chuàng)新,Node.js 在 2023 年達(dá)到了一個新的高度。Node.js 擁有一個龐大的生態(tài)系統(tǒng),可以幫助開發(fā)人員更快地實(shí)現(xiàn)復(fù)雜的應(yīng)用。本文就來看看 Node.js 最新的生
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應(yīng)用時,需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進(jìn)行快速上手?本片講解3個把LangChain跑起來
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發(fā)仿造稿定設(shè)計(jì)的圖片編輯器到現(xiàn)在,不知不覺已過去一年時間了,期間我經(jīng)歷了裁員失業(yè)、面試找工作碰壁,寒冬下一直沒有很好地履行計(jì)劃.....這些就放在日
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    作者:彭寬鴻來源:華爾街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;東方甄選創(chuàng)始人俞敏洪帶隊(duì)的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一
  • 與兆芯合作 聯(lián)想推出全新旗艦版筆記本電腦開天N7系列

    聯(lián)想與兆芯合作推出全新聯(lián)想旗艦版筆記本電腦開天 N7系列。這個系列采用兆芯KX-6640MA處理器平臺,KX-6640MA 處理器是采用了陸家嘴架構(gòu),16nm 工藝,4 核 4 線
  • 電博會與軟博會實(shí)現(xiàn)"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發(fā)揮展會拉動人流、信息流、資金流實(shí)現(xiàn)快速交互流動的作用,繼而推動區(qū)域經(jīng)濟(jì)良性發(fā)展;又可以聚
Top