Bagaimanakah kita boleh menyimpan dan mendapatkan semula fungsi dalam struktur data seperti senarai dan kamus dengan berkesan?

Susan Sarandon
Lepaskan: 2024-10-30 01:40:29
asal
670 orang telah melayarinya

How can we effectively store and retrieve functions in data structures like lists and dictionaries?

Menyimpan dan Menggunakan Fungsi dalam Struktur Data

Dalam pengaturcaraan, kita selalunya perlu mengatur dan mengurus fungsi untuk pelaksanaan yang cekap. Satu pendekatan biasa ialah menyimpan fungsi dalam struktur data seperti senarai dan kamus, membolehkan kami merujuk dan menggunakan fungsi tersebut secara dinamik. Walau bagaimanapun, persoalan timbul: bagaimanakah kita boleh menyimpan dan mendapatkan semula fungsi secara berkesan dalam struktur ini?

Sebagai contoh, pertimbangkan pendekatan berikut:

<code class="python">mydict = {
    'funcList1': [foo(), bar(), goo()],
    'funcList2': [foo(), goo(), bar()]}</code>
Salin selepas log masuk

Pendekatan ini cuba menyimpan hasil fungsi panggilan (iaitu, mengembalikan nilai) dalam kamus, tetapi ia tidak akan berfungsi seperti yang diharapkan. Sebaliknya, kita memerlukan cara untuk menyimpan sendiri objek fungsi sebenar.

Dalam Python, fungsi ialah objek kelas pertama, yang bermaksud ia boleh dianggap sebagai nilai dan disimpan dalam struktur data. Untuk menyimpan fungsi dalam kamus dengan berkesan, kita perlu menetapkan objek fungsi kepada kekunci, bukan nilai pulangannya. Contohnya:

<code class="python">dispatcher = {'foo': foo, 'bar': bar}</code>
Salin selepas log masuk

di mana foo dan bar ialah objek fungsi.

Untuk memanggil fungsi daripada kamus ini, kami hanya memanggilnya menggunakan kekuncinya:

<code class="python">dispatcher['foo']()  # calls the foo function</code>
Salin selepas log masuk

Jika kita perlu menjalankan berbilang fungsi yang disimpan dalam senarai, kita boleh menggunakan fungsi pembantu untuk melelar melalui senarai dan menggunakan setiap fungsi:

<code class="python">dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]}

def fire_all(func_list):
    for f in func_list:
        f()

fire_all(dispatcher['foobar'])</code>
Salin selepas log masuk

Pendekatan ini membolehkan kami mengatur dan menggunakan fungsi secara dinamik, memudahkan organisasi kod dan mengurangkan bilangan pernyataan def yang diperlukan.

Atas ialah kandungan terperinci Bagaimanakah kita boleh menyimpan dan mendapatkan semula fungsi dalam struktur data seperti senarai dan kamus dengan berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan