Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ringkasan menggunakan modul functools Python

Ringkasan menggunakan modul functools Python

WBOY
WBOYke hadapan
2022-07-27 17:27:272736semak imbas

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.

Ringkasan menggunakan modul functools Python

[Cadangan berkaitan: Tutorial video Python3 ]

separa

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

update_wrapper

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

wraps

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

reduce

adalah bersamaan dengan fungsi terbina dalam reduce dalam Python2 Fungsi fungsi adalah untuk menukar jujukan diringkaskan menjadi output

cmp_to_key
reduce(function, sequence, startValue)

from functools import reduce

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

Terdapat parameter utama dalam list.sort dan fungsi terbina dalam diisih

Python 3 juga disediakan ia sebelum Parameter cmp digunakan untuk membandingkan dua elemen
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

membolehkan kami menukar dengan cepat. nilai pulangan bagi fungsi Cache atau nyahcache.

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.

singledispatch
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()   # 清空缓存

Penghantar tunggal, baharu dalam Python3.4, digunakan untuk melaksanakan fungsi generik.

Tentukan fungsi yang hendak dipanggil berdasarkan jenis parameter tunggal.

[Cadangan berkaitan:
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>
Tutorial video Python3

]

Atas ialah kandungan terperinci Ringkasan menggunakan modul functools Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam