Ringkasan menggunakan modul functools Python

WBOY
Lepaskan: 2022-07-27 17:27:27
ke hadapan
2749 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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']
Salin selepas log masuk

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()   # 清空缓存
Salin selepas log masuk

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>
Salin selepas log masuk
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!

Label berkaitan:
sumber:jb51.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!