ホームページ  >  記事  >  バックエンド開発  >  Pythonのfunctoolsモジュールの使い方のまとめ

Pythonのfunctoolsモジュールの使い方のまとめ

WBOY
WBOY転載
2022-07-27 17:27:272767ブラウズ

この記事は、Python に関する関連知識を提供します。主に Python の functools モジュールの使い方と説明を紹介します。非常に参考になります。一緒に見てみましょう。そうなることを願っています。みんなに役立つ、役に立つ。

Pythonのfunctoolsモジュールの使い方のまとめ

[関連する推奨事項: Python3 ビデオ チュートリアル]

partial

は部分関数を作成するために使用されます。デフォルトのパラメータは呼び出し可能オブジェクトをラップしており、返される結果も呼び出し可能オブジェクトです。

部分関数は、元の関数の一部のパラメーターを修正して、呼び出しを容易にすることができます。

from functools import partial

int2 = partial(int, base=8)
print(int2('123'))
# 83

update_wrapper

パーシャルを使用してラップされた関数には、__name__ 属性と __doc__ 属性がありません。

update_wrapper 関数: ラップされた関数の __name__ およびその他の属性を新しい関数にコピーします。

from functools import update_wrapper
def wrap2(func):
    def inner(*args):
        return func(*args)
    return update_wrapper(inner, func)

@wrap2
def demo():
    print('hello world')

print(demo.__name__)
# demo

wraps

warps 関数は、デコレータ内の装飾された関数の __name__ をコピーします。

update_wrapperのラッパーです

from functools import wraps
def wrap1(func):
    @wraps(func)    # 去掉就会返回inner
    def inner(*args):
        print(func.__name__)
        return func(*args)
    return inner

@wrap1
def demo():
    print('hello world')

print(demo.__name__)
# demo

reduce

Python2では組み込み関数reduceに相当します

関数の機能シーケンスを要約することです 出力の場合

reduce(function, sequence, startValue)

from functools import reduce

l = range(1,50)
print(reduce(lambda x,y:x+y, l))
# 1225

cmp_to_key

list.sortにはキーパラメータがあり、組み込み関数sorted

x = ['hello','worl','ni']
x.sort(key=len)
print(x)
# ['ni', 'worl', 'hello']

Python3以前はcmpパラメータも 2 つを比較するために提供されました。要素

cmp_to_key 関数は、古い比較関数を key 関数に変換するために使用されます。

lru_cache

を使用すると、関数の戻り値。

このデコレータは、関数の呼び出し結果をキャッシュするために使用されます。複数回呼び出す必要があり、各呼び出しのパラメータが同じである関数の場合、このデコレータを使用して呼び出し結果をキャッシュできます。プログラムの高速化。

このデコレータはさまざまな呼び出し結果をメモリにキャッシュするため、メモリ使用量の問題に注意する必要があります。

from functools import lru_cache
@lru_cache(maxsize=30)  # maxsize参数告诉lru_cache缓存最近多少个返回值
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)
print([fib(n) for n in range(10)])
fib.cache_clear()   # 清空缓存

singledispatch

Python3.4 の新機能であるシングル ディスパッチャは、汎用関数の実装に使用されます。

単一パラメータの型に基づいて、どの関数を呼び出すかを決定します。

from functools import singledispatch
@singledispatch
def fun(text):
    print(&#39;String:&#39; + text)

@fun.register(int)
def _(text):
    print(text)

@fun.register(list)
def _(text):
    for k, v in enumerate(text):
        print(k, v)

@fun.register(float)
@fun.register(tuple)
def _(text):
    print(&#39;float, tuple&#39;)
fun(&#39;i am is hubo&#39;)
fun(123)
fun([&#39;a&#39;,&#39;b&#39;,&#39;c&#39;])
fun(1.23)
print(fun.registry)    # 所有的泛型函数
print(fun.registry[int])    # 获取int的泛型函数
# String:i am is hubo
# 123
# 0 a
# 1 b
# 2 c
# float, tuple
# {<class &#39;object&#39;>: <function fun at 0x106d10f28>, <class &#39;int&#39;>: <function _ at 0x106f0b9d8>, <class &#39;list&#39;>: <function _ at 0x106f0ba60>, <class &#39;tuple&#39;>: <function _ at 0x106f0bb70>, <class &#39;float&#39;>: <function _ at 0x106f0bb70>}
# <function _ at 0x106f0b9d8>

【関連する推奨事項: Python3 ビデオ チュートリアル ]

以上がPythonのfunctoolsモジュールの使い方のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。