Maison >développement back-end >Tutoriel Python >Résumé de l'utilisation du module functools de Python
Cet article vous apporte des connaissances pertinentes sur Python. Il présente principalement l'utilisation et la description du module functools de Python. Il a une bonne valeur de référence. Examinons-le ensemble, j'espère qu'il sera utile à tout le monde.
【Recommandation associée : Tutoriel vidéo Python3】
est utilisé pour créer une fonction partielle, envelopper les paramètres par défaut dans un objet appelable et le résultat renvoyé est également un objet appelable.
Les fonctions partielles peuvent corriger certains paramètres de la fonction d'origine, ce qui facilite son appel.
from functools import partial int2 = partial(int, base=8) print(int2('123')) # 83
Les fonctions enveloppées à l'aide de partial n'ont pas d'attributs __name__ et __doc__.
Fonction update_wrapper : copiez le __name__ et les autres attributs de la fonction encapsulée dans la nouvelle fonction. La fonction
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 consiste à copier le __name__ de la fonction décorée dans le décorateur.
C'est un wrapper sur 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
En Python2, c'est équivalent à la fonction intégrée réduire
La fonction de la fonction est de résumer une séquence dans une sortie
reduce(function, sequence, startValue) from functools import reduce l = range(1,50) print(reduce(lambda x,y:x+y, l)) # 1225
Dans la liste .sort et le paramètre intégré Il y a un paramètre clé dans la fonction sorted
x = ['hello','worl','ni'] x.sort(key=len) print(x) # ['ni', 'worl', 'hello']
Python3 a précédemment fourni le paramètre cmp pour comparer deux éléments
La fonction cmp_to_key est utilisée pour convertir l'ancienne fonction de comparaison en une fonction clé
nous permet de convertir une fonction. Les valeurs de retour sont rapidement mises en cache ou non.
Ce décorateur est utilisé pour mettre en cache les résultats des appels de fonctions. Pour les fonctions qui doivent être appelées plusieurs fois et que les paramètres sont les mêmes pour chaque appel, vous pouvez utiliser ce décorateur pour mettre en cache les résultats des appels, accélérant ainsi le programme. .
Ce décorateur mettra en cache différents résultats d'appels en mémoire, vous devez donc faire attention au problème d'utilisation de la mémoire.
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() # 清空缓存
Le répartiteur unique, nouveau dans Python3.4, est utilisé pour implémenter des fonctions génériques.
Déterminez quelle fonction appeler en fonction du type d'un seul paramètre.
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>
【Recommandations associées : Tutoriel vidéo Python3】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!