Jadual Kandungan
Bagaimana anda menggunakan modul Funcools di Python?
Apakah beberapa contoh praktikal menggunakan penghias funcools di Python?
Bagaimanakah funcools.lru_cache meningkatkan prestasi kod python anda?
Apakah faedah menggunakan funcools.Partial untuk penyesuaian fungsi dalam python?
Rumah pembangunan bahagian belakang Tutorial Python Bagaimana anda menggunakan modul Funcools di Python?

Bagaimana anda menggunakan modul Funcools di Python?

Mar 26, 2025 pm 12:17 PM

Bagaimana anda menggunakan modul Funcools di Python?

Modul functools dalam Python digunakan untuk meningkatkan fungsi fungsi dan objek lain yang boleh dipanggil tanpa mengubah kod sumber mereka. Ia menyediakan pelbagai fungsi pesanan tinggi yang beroperasi atau mengembalikan fungsi lain. Berikut adalah cara anda boleh menggunakan beberapa alat yang paling biasa dalam modul functools :

  1. Penghias : functools menawarkan penghias seperti wraps , yang biasanya digunakan untuk memelihara metadata (seperti nama dan docstring) fungsi asal ketika membuat penghias.

     <code class="python">from functools import wraps def my_decorator(func): @wraps(func) def wrapper(*args, **kwargs): print("Something is happening before the function is called.") func(*args, **kwargs) print("Something is happening after the function is called.") return wrapper @my_decorator def say_hello(): """Say hello function""" print("Hello!") say_hello()</code>
    Salin selepas log masuk
  2. partial : Fungsi ini digunakan untuk membuat versi baru fungsi dengan beberapa argumen yang telah dipenuhi.

     <code class="python">from functools import partial def multiply(x, y): return x * y # Create a new function that multiplies by 2 doubled = partial(multiply, 2) print(doubled(4)) # Output: 8</code>
    Salin selepas log masuk
    Salin selepas log masuk
  3. reduce : Fungsi ini menggunakan fungsi dua argumen secara kumulatif kepada item urutan, dari kiri ke kanan, untuk mengurangkan urutan ke satu nilai.

     <code class="python">from functools import reduce numbers = [1, 2, 3, 4] result = reduce(lambda x, y: xy, numbers) print(result) # Output: 10</code>
    Salin selepas log masuk
  4. lru_cache : Ini adalah penghias yang menambah keupayaan memoing (caching) ke fungsi, yang boleh berguna untuk mempercepat fungsi rekursif atau fungsi dengan pengiraan mahal.

     <code class="python">from functools import lru_cache @lru_cache(maxsize=None) def fibonacci(n): if n </code>
    Salin selepas log masuk
    Salin selepas log masuk

Apakah beberapa contoh praktikal menggunakan penghias funcools di Python?

Penghias Funcools menyediakan cara yang kuat untuk meningkatkan tingkah laku fungsi dalam Python. Berikut adalah beberapa contoh praktikal:

  1. Hasil caching : Menggunakan @lru_cache untuk memoize hasil fungsi untuk panggilan seterusnya yang lebih cepat.

     <code class="python">from functools import lru_cache @lru_cache(maxsize=None) def expensive_function(n): # Simulate an expensive computation return n ** n print(expensive_function(10)) # First call is slow print(expensive_function(10)) # Second call is fast due to caching</code>
    Salin selepas log masuk
  2. Memelihara Metadata Fungsi : Menggunakan @wraps untuk mengekalkan nama fungsi dan docstrings semasa menulis penghias.

     <code class="python">from functools import wraps def timer_decorator(func): @wraps(func) def wrapper(*args, **kwargs): import time start_time = time.time() result = func(*args, **kwargs) end_time = time.time() print(f"{func.__name__} took {end_time - start_time} seconds to run.") return result return wrapper @timer_decorator def slow_function(): """A function that simulates a slow operation.""" import time time.sleep(2) return "Done" print(slow_function.__name__) # Output: slow_function print(slow_function.__doc__) # Output: A function that simulates a slow operation.</code>
    Salin selepas log masuk
  3. Fungsi Logging Panggilan : Penghias kepada panggilan fungsi log dan hujah mereka.

     <code class="python">from functools import wraps def log_calls(func): @wraps(func) def wrapper(*args, **kwargs): print(f"Calling {func.__name__} with args: {args}, kwargs: {kwargs}") return func(*args, **kwargs) return wrapper @log_calls def add(a, b): return ab print(add(2, 3)) # Output: Calling add with args: (2, 3), kwargs: {}</code>
    Salin selepas log masuk

Bagaimanakah funcools.lru_cache meningkatkan prestasi kod python anda?

functools.lru_cache adalah penghias yang melaksanakan memoisasi, yang dapat meningkatkan prestasi fungsi dengan panggilan berulang, terutama mereka yang mempunyai perhitungan rekursif atau mahal. Begini cara ia berfungsi dan faedahnya:

  1. Hasil caching : lru_cache menyimpan hasil panggilan fungsi dan mengembalikan hasil cache apabila input yang sama berlaku lagi. Ini mengurangkan bilangan panggilan fungsi sebenar, yang boleh menyebabkan peningkatan kelajuan dramatik.

     <code class="python">from functools import lru_cache @lru_cache(maxsize=None) def fibonacci(n): if n </code>
    Salin selepas log masuk
    Salin selepas log masuk
  2. Kecekapan Memori : Parameter maxsize membolehkan anda mengawal saiz cache. Nilai None bermakna cache boleh tumbuh tanpa terikat, sedangkan menentukan nombor mengehadkan saiz cache, yang boleh berguna untuk menguruskan penggunaan memori.
  3. Keselamatan Thread : lru_cache adalah benang selamat, menjadikannya sesuai untuk digunakan dalam aplikasi berbilang threaded.
  4. Kemudahan Penggunaan : Memohon penghias adalah mudah dan tidak memerlukan mengubah kod sumber fungsi.
  5. Analisis Prestasi : Anda boleh mengukur keberkesanan cache dengan membandingkan masa pelaksanaan fungsi dengan dan tanpa penghias.

     <code class="python">import time @lru_cache(maxsize=None) def expensive_function(n): time.sleep(1) # Simulate an expensive computation return n ** n start_time = time.time() result = expensive_function(10) end_time = time.time() print(f"First call took {end_time - start_time} seconds") start_time = time.time() result = expensive_function(10) end_time = time.time() print(f"Second call took {end_time - start_time} seconds")</code>
    Salin selepas log masuk

Apakah faedah menggunakan funcools.Partial untuk penyesuaian fungsi dalam python?

functools.partial adalah alat yang berguna untuk membuat objek yang boleh dipanggil baru dengan beberapa argumen fungsi asal yang telah dipenuhi. Berikut adalah faedah menggunakan functools.partial :

  1. Memudahkan panggilan fungsi : Dengan pra-mengisi beberapa hujah, anda boleh membuat versi fungsi yang lebih mudah yang lebih mudah digunakan dalam konteks tertentu.

     <code class="python">from functools import partial def multiply(x, y): return x * y # Create a new function that multiplies by 2 doubled = partial(multiply, 2) print(doubled(4)) # Output: 8</code>
    Salin selepas log masuk
    Salin selepas log masuk
  2. Menyesuaikan Fungsi : Anda boleh membuat versi fungsi yang disesuaikan tanpa mengubah fungsi asal, yang berguna untuk penggunaan semula kod dan modularity.

     <code class="python">from functools import partial def greet(greeting, name): return f"{greeting}, {name}!" hello_greet = partial(greet, "Hello") print(hello_greet("Alice")) # Output: Hello, Alice!</code>
    Salin selepas log masuk
  3. Meningkatkan kebolehbacaan : Dengan mencipta versi fungsi khusus, anda boleh menjadikan kod anda lebih mudah dibaca dan jelas.

     <code class="python">from functools import partial def power(base, exponent): return base ** exponent square = partial(power, exponent=2) cube = partial(power, exponent=3) print(square(3)) # Output: 9 print(cube(3)) # Output: 27</code>
    Salin selepas log masuk
  4. Memudahkan ujian : partial boleh digunakan untuk membuat versi fungsi khusus ujian, menjadikannya lebih mudah untuk menulis dan mengekalkan ujian unit.

     <code class="python">from functools import partial def divide(a, b): return a / b # Create a test-specific version of divide divide_by_two = partial(divide, b=2) # Use in a test case assert divide_by_two(10) == 5</code>
    Salin selepas log masuk
  5. Integrasi dengan alat lain : partial boleh digabungkan dengan alat functools lain, seperti lru_cache , untuk membuat penyesuaian fungsi yang kuat dan cekap.

     <code class="python">from functools import partial, lru_cache @lru_cache(maxsize=None) def power(base, exponent): return base ** exponent square = partial(power, exponent=2) cube = partial(power, exponent=3) print(square(3)) # Output: 9 print(cube(3)) # Output: 27</code>
    Salin selepas log masuk

Dengan memanfaatkan functools.partial , anda dapat meningkatkan fleksibiliti dan mengekalkan kod Python anda, menjadikannya lebih mudah untuk menyesuaikan fungsi ke kes penggunaan yang berbeza tanpa mengubah definisi asalnya.

Atas ialah kandungan terperinci Bagaimana anda menggunakan modul Funcools di Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah? Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah? Apr 02, 2025 am 07:15 AM

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam? Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam? Apr 02, 2025 am 07:18 AM

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Bagaimana untuk mendapatkan data berita yang melangkaui mekanisme anti-crawler Investing.com? Bagaimana untuk mendapatkan data berita yang melangkaui mekanisme anti-crawler Investing.com? Apr 02, 2025 am 07:03 AM

Memahami Strategi Anti-Crawling of Investing.com Ramai orang sering cuba merangkak data berita dari Investing.com (https://cn.investing.com/news/latest-news) ...

Python 3.6 Memuatkan Ralat Fail Pickle ModulenotFoundError: Apa yang perlu saya lakukan jika saya memuatkan fail acar '__builtin__'? Python 3.6 Memuatkan Ralat Fail Pickle ModulenotFoundError: Apa yang perlu saya lakukan jika saya memuatkan fail acar '__builtin__'? Apr 02, 2025 am 06:27 AM

Memuatkan Fail Pickle di Python 3.6 Kesalahan Alam Sekitar: ModulenotFoundError: Nomodulenamed ...

Apakah sebab mengapa fail saluran paip tidak dapat ditulis apabila menggunakan crawler scapy? Apakah sebab mengapa fail saluran paip tidak dapat ditulis apabila menggunakan crawler scapy? Apr 02, 2025 am 06:45 AM

Perbincangan mengenai sebab -sebab mengapa fail saluran paip tidak dapat ditulis apabila menggunakan crawler scapy apabila belajar dan menggunakan crawler scapy untuk penyimpanan data yang berterusan, anda mungkin menghadapi fail saluran paip ...

See all articles