Artikel ini membawakan anda pengetahuan yang berkaitan tentang Python terutamanya memperkenalkan penggunaan dan huraian modul functools Ia mempunyai nilai rujukan yang baik berguna kepada semua orang.
[Cadangan berkaitan: Tutorial video Python3 ]
digunakan untuk mencipta fungsi separa, Parameter lalai membalut objek boleh dipanggil, dan hasil yang dikembalikan juga merupakan objek boleh dipanggil.
Fungsi separa boleh membetulkan beberapa parameter fungsi asal, menjadikannya lebih mudah untuk dipanggil.
from functools import partial int2 = partial(int, base=8) print(int2('123')) # 83
Fungsi dibalut menggunakan separa tidak mempunyai atribut __name__ dan __doc__.
Fungsi Pembalut_Kemas kini: Salin __name__ dan atribut lain fungsi yang dibalut ke fungsi baharu.
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
Fungsi warps adalah untuk menyalin __name__ fungsi yang dihias dalam penghias.
ialah pembalut pada 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
adalah bersamaan dengan fungsi terbina dalam reduce dalam Python2 Fungsi fungsi adalah untuk menukar jujukan diringkaskan menjadi output
cmp_to_keyreduce(function, sequence, startValue) from functools import reduce l = range(1,50) print(reduce(lambda x,y:x+y, l)) # 1225
x = ['hello','worl','ni'] x.sort(key=len) print(x) # ['ni', 'worl', 'hello']
fungsi cmp_to_key digunakan untuk menukar fungsi perbandingan lama kepada kunci Fungsi
lru_cache
Penghias ini digunakan untuk cache hasil panggilan fungsi Untuk fungsi yang perlu dipanggil beberapa kali, dan parameter adalah sama untuk setiap panggilan, anda boleh menggunakan penghias ini untuk cache hasil panggilan, dengan itu. mempercepatkan program.
Penghias ini akan menyimpan hasil panggilan yang berbeza dalam memori, jadi anda perlu memberi perhatian kepada isu penggunaan memori.
singledispatchfrom 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() # 清空缓存
Tentukan fungsi yang hendak dipanggil berdasarkan jenis parameter tunggal.
[Cadangan berkaitan: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>
Atas ialah kandungan terperinci Ringkasan menggunakan modul functools Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!