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.
【Verwandte Empfehlung: Python3-Video-Tutorial】
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
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
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
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
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']
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
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() # 清空缓存
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('String:' + 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('float, tuple') fun('i am is hubo') fun(123) fun(['a','b','c']) 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 'object'>: <function fun at 0x106d10f28>, <class 'int'>: <function _ at 0x106f0b9d8>, <class 'list'>: <function _ at 0x106f0ba60>, <class 'tuple'>: <function _ at 0x106f0bb70>, <class 'float'>: <function _ at 0x106f0bb70>} # <function _ at 0x106f0b9d8>
【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!