Zusammenfassung der Verwendung des Functools-Moduls von Python

WBOY
Freigeben: 2022-07-27 17:27:27
nach vorne
2753 Leute haben es durchsucht

Dieser Artikel vermittelt Ihnen relevantes Wissen über Python. Er stellt hauptsächlich die Verwendung und Beschreibung des Functools-Moduls vor. Ich hoffe, dass er für alle hilfreich ist.

Zusammenfassung der Verwendung des Functools-Moduls von Python

【Verwandte Empfehlung: Python3-Video-Tutorial

partial

wird verwendet, um eine Teilfunktion zu erstellen, die Standardparameter in ein aufrufbares Objekt zu packen und das Rückgabeergebnis ist ebenfalls ein aufrufbares Objekt.

Teilfunktionen können einige Parameter der ursprünglichen Funktion korrigieren und so den Aufruf erleichtern.

from functools import partial

int2 = partial(int, base=8)
print(int2('123'))
# 83
Nach dem Login kopieren

update_wrapper

Funktionen, die partiell umschlossen werden, haben keine __name__- und __doc__-Attribute.

update_wrapper-Funktion: Kopieren Sie den __name__ und andere Attribute der umschlossenen Funktion in die neue Funktion. Die Funktion

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
Nach dem Login kopieren

wraps

warps besteht darin, den __name__ der dekorierten Funktion im Decorator zu kopieren.

Es ist ein Wrapper für 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
Nach dem Login kopieren

reduce

In Python2 entspricht es der integrierten Funktion Reduce

Die Funktion der Funktion besteht darin, eine Sequenz in einer Ausgabe zusammenzufassen

reduce(function, sequence, startValue)

from functools import reduce

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

cmp_to_key

In-Liste .sort und integriert Es gibt einen Schlüsselparameter in der sortierten Funktion

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

Python3 hat zuvor den cmp-Parameter zum Vergleichen zweier Elemente bereitgestellt

cmp_to_key-Funktion wird verwendet, um die alte Vergleichsfunktion in eine Schlüsselfunktion umzuwandeln

lru_cache

erlaubt Wir konvertieren eine Funktion. Rückgabewerte werden schnell zwischengespeichert oder nicht zwischengespeichert.

Dieser Dekorator wird zum Zwischenspeichern der Aufrufergebnisse von Funktionen verwendet, die mehrmals aufgerufen werden müssen und bei denen die Parameter bei jedem Aufruf gleich sind. Sie können diesen Dekorator zum Zwischenspeichern der Aufrufergebnisse verwenden und so das Programm beschleunigen .

Dieser Dekorator speichert verschiedene Anrufergebnisse im Speicher, daher müssen Sie auf das Problem der Speichernutzung achten.

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()   # 清空缓存
Nach dem Login kopieren

singledispatch

Einzelner Dispatcher, neu in Python3.4, der zur Implementierung generischer Funktionen verwendet wird.

Bestimmen Sie anhand des Typs eines einzelnen Parameters, welche Funktion aufgerufen werden soll.

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>
Nach dem Login kopieren

【Verwandte Empfehlungen: Python3-Video-Tutorial

Das obige ist der detaillierte Inhalt vonZusammenfassung der Verwendung des Functools-Moduls von Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!