最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python函數(shù)式編程模塊functools的使用與實踐

 更新時間:2024年03月07日 15:46:08   作者:盜理者  
本文主要介紹了Python函數(shù)式編程模塊functools的使用與實踐,教你如何使用?functools.partial、functools.wraps、functools.lru_cache?和?functools.reduce,感興趣的可以了解一下

介紹

functools 模塊是 Python 的標準庫之一,它提供了一系列用于函數(shù)操作的函數(shù)。使用這些函數(shù)可以編寫更簡潔、更高效的代碼,尤其是在函數(shù)式編程范式中。以下是對 functools 模塊中一些重要功能做的一個分享

functools 模塊的功能

functools.partial

functools.partial 函數(shù)用于創(chuàng)建一個新的函數(shù),這個新函數(shù)是原始函數(shù)的一個偏應用,即固定函數(shù)的一些參數(shù)。

from functools import partial
# 定義一個函數(shù),需要多個參數(shù)
def power(base, exponent):
    return base ** exponent
# 使用 functools.partial 創(chuàng)建一個偏函數(shù),只保留一個參數(shù)
square = partial(power, exponent=2)
# 調(diào)用偏函數(shù)
print(square(4))  # 輸出: 16

在這里插入圖片描述

functools.wraps

functools.wraps 裝飾器用于保留被包裝函數(shù)的元信息,如文檔字符串、名稱和參數(shù)列表。

from functools import wraps
# 定義一個函數(shù)
def my_function(a, b):
    """函數(shù)"""
    return a + b
# 使用 functools.wraps 裝飾器包裝一個函數(shù)
@wraps(my_function)
def wrapper(c, d):
    return my_function(c, d)
# 檢查 wrapper 函數(shù)的元信息
print(wrapper.__doc__)  # 輸出:函數(shù)
print(wrapper.__name__)  # 輸出:my_function

在這里插入圖片描述

functools.lru_cache

functools.lru_cache 裝飾器用于緩存函數(shù)的返回值,這對于避免重復計算昂貴的函數(shù)調(diào)用非常有用。

from functools import lru_cache
@lru_cache(maxsize=None)
def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)
# 調(diào)用 fibonacci 函數(shù)
print(fibonacci(100))  # 354224848179261915075

在這里插入圖片描述

functools.reduce

functools.reduce 函數(shù)用于將一個二元操作函數(shù)累積地應用到一個序列的所有元素上,從左到右,直到序列結(jié)束。

from functools import reduce
# 定義一個函數(shù),計算乘積
def multiply(x, y):
    return x * y
# 使用 reduce 計算 [1, 2, 3, 4] 的乘積
print(reduce(multiply, [1, 2, 3, 4]))  # 輸出: 24

在這里插入圖片描述

實例演示

使用 functools.partial 創(chuàng)建固定參數(shù)的函數(shù)

from functools import partial
def add(a, b, c):
    return a + b + c
partial_add = partial(add, c=5)
print(partial_add(1, 2))  # 輸出: 8

在這里插入圖片描述

使用 functools.wraps 保留原函數(shù)的文檔字符串和名稱

from functools import wraps
def my_function(a, b):
    """函數(shù)"""
    return a + b
@wraps(my_function)
def my_wrapper(c, d):
    return my_function(c, d)
print(my_wrapper.__doc__)  # 輸出:函數(shù)

在這里插入圖片描述

使用 functools.lru_cache 加速函數(shù)的執(zhí)行

from functools import lru_cache
@lru_cache(maxsize=128)
def memoized_factorial(n):
    if n == 0:
        return 1
    return n * memoized_factorial(n - 1)
print(memoized_factorial(5))  # 輸出: 120

在這個例子中,memoized_factorial 函數(shù)使用 lru_cache 來緩存之前計算的結(jié)果。這意味著當函數(shù)被重復調(diào)用時,如果之前已經(jīng)計算過相同參數(shù)的結(jié)果,functools 將返回緩存的結(jié)果,而不是重新計算。

在這里插入圖片描述

使用 functools.reduce 實現(xiàn)自定義的 reduce 操作

from functools import reduce

def average(total, new_value):
    return total + new_value

result = reduce(average, [1, 2, 3, 4], 0) / len([1, 2, 3, 4])
print(result)  # 輸出: 2.5

在這里插入圖片描述

在這個例子中,定義了一個 average 函數(shù),它將一個新值加到總和中。然后使用 reduce 函數(shù)來應用這個 average 函數(shù)到列表 [1, 2, 3, 4] 上,初始值為 0。這樣就得到了列表的平均值。

functools 模塊為 Python 的函數(shù)式編程提供了許多有用的工具。通過學習如何使用 functools.partialfunctools.wraps、functools.lru_cache 和 functools.reduce,可以更加高效地處理函數(shù)和數(shù)據(jù)集合。這些功能不僅可以提高代碼的性能,還可以使代碼更加清晰和易于維護。

到此這篇關(guān)于Python函數(shù)式編程模塊functools的使用與實踐的文章就介紹到這了,更多相關(guān)Python functools內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用RPC例子

    Python使用RPC例子

    本文主要介紹了Python使用RPC例子,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • python中使用psutil查看內(nèi)存占用的情況

    python中使用psutil查看內(nèi)存占用的情況

    今天小編就為大家分享一篇python中使用psutil查看內(nèi)存占用的情況,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python常用知識點匯總

    Python常用知識點匯總

    這篇文章主要介紹了Python常用知識點匯總,包括Set集合,函數(shù),深入拷貝,淺入拷貝,需要的朋友可以參考下
    2016-05-05
  • tensorflow 分類損失函數(shù)使用小記

    tensorflow 分類損失函數(shù)使用小記

    這篇文章主要介紹了tensorflow 分類損失函數(shù)使用小記,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • Python代碼實現(xiàn)PDF與TIFF互轉(zhuǎn)

    Python代碼實現(xiàn)PDF與TIFF互轉(zhuǎn)

    在本指南中,我們將深入探討如何借助Spire.PDF for Python和Pillow(PIL)庫的強大功能,在Python將PDF與TIFF這兩種格式進行互相轉(zhuǎn)換,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2026-05-05
  • Python將身份證正反面圖片生成PDF方法代碼

    Python將身份證正反面圖片生成PDF方法代碼

    在日常生活中,經(jīng)常會遇到需要提交身份證正反面證明資料的情況,而且這些網(wǎng)站大部分只接受pdf格式,這篇文章主要介紹了Python將身份證正反面圖片生成PDF的相關(guān)資料,需要的朋友可以參考下
    2025-12-12
  • Python構(gòu)建圖像分類識別器的方法

    Python構(gòu)建圖像分類識別器的方法

    今天小編就為大家分享一篇Python構(gòu)建圖像分類識別器的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python導入或執(zhí)行python源文件的3種方法

    Python導入或執(zhí)行python源文件的3種方法

    這篇文章主要給大家介紹了關(guān)于Python導入或執(zhí)行python源文件的3種方法,python源代碼的文件以"py"為擴展名,由python.exe解釋,可以在控制臺下運行,需要的朋友可以參考下
    2023-08-08
  • Python深入學習之特殊方法與多范式

    Python深入學習之特殊方法與多范式

    這篇文章主要介紹了Python深入學習之特殊方法與多范式,特殊方法就像PHP里的魔術(shù)方法,多范式是指可以用面向?qū)ο?、面向過程、函數(shù)式、聲明式等方式編寫程序,需要的朋友可以參考下
    2014-08-08
  • 使用python實現(xiàn)群發(fā)微信消息的工具

    使用python實現(xiàn)群發(fā)微信消息的工具

    如果您想批量向微信好友發(fā)送相同的內(nèi)容,手動一個個操作非常費時費力,這時候可以用Python實現(xiàn)自動化處理,更加高效方便,下面小編就來和大家講講具體操作吧
    2025-05-05

最新評論

丰城市| 阜平县| 宾川县| 上虞市| 玉树县| 长宁县| 崇礼县| 广州市| 青铜峡市| 运城市| 武川县| 那曲县| 英山县| 绥芬河市| 成都市| 措勤县| 铜梁县| 镇赉县| 阿荣旗| 镇坪县| 边坝县| 大余县| 威宁| 元朗区| 望城县| 牙克石市| 白沙| 颍上县| 拉萨市| 天津市| 包头市| 灵山县| 读书| 清镇市| 九台市| 云浮市| 旅游| 田东县| 巴南区| 宜川县| 唐山市|