Dalam Python, fungsi dan kaedah dianggap objek kelas pertama, bermakna ia boleh dilayan seperti mana-mana jenis data lain. Walau bagaimanapun, satu aspek unik objek kelas pertama ialah keupayaan untuk menggunakannya tanpa kurungan.
Penjelasan Contoh Kod
Coretan kod yang disediakan memulakan dua kejadian objectTest kelas, a dan b, dengan nilai yang sama. Output menunjukkan bahawa:
Pengguguran Tanda Kurung
Hasil yang mengejutkan ialah ungkapan terakhir, a.get_value == b.get_value. Ini menilai kepada False walaupun get_value adalah kaedah yang sama untuk kedua-dua objek. Ini berlaku kerana tanpa kurungan, kami tidak memanggil kaedah sebaliknya mengakses objek fungsi itu sendiri.
Mengapa Pengabaian Dibenarkan
Python membenarkan peninggalan kurungan kerana ini menyediakan cara ringkas untuk menyampaikan rujukan kepada yang boleh dipanggil (fungsi atau kaedah) itu sendiri. Ini amat berguna dalam beberapa situasi:
Menggunakan Panggilan Balik:
Panggilan balik ialah fungsi atau kaedah yang dihantar kepada fungsi lain untuk dilaksanakan pada masa akan datang. Meninggalkan kurungan membolehkan untuk menghantar rujukan panggil balik, seperti yang dilihat dalam contoh berbilang pemprosesan:
t = Process(target=my_long_running_function)
Fungsi Pemetaan:
Apabila menggunakan fungsi peta, anda boleh lulus boleh dipanggil tanpa tanda kurung untuk mengisinya hujah:
map(do_something, ['hey', 'what up', 'yo'])
Invokasi Dinamik:
Pengecualian kurungan mendayakan seruan dinamik, di mana anda boleh mengambil dan melaksanakan panggilan yang diingini daripada koleksi:
str_ops = {'<': lt, '>': gt, '==': eq} op = str_ops.get(my_operator) if op: result = op(lhs, rhs)
Ringkasnya, meninggalkan tanda kurung semasa memanggil fungsi atau kaedah membolehkan penghantaran rujukan yang cekap kepada yang boleh dipanggil itu sendiri, membolehkan pelbagai fungsi seperti panggilan balik, seruan dinamik dan pemetaan.
Atas ialah kandungan terperinci Bilakah Pengecualian Kurungan Dibenarkan dalam Fungsi Python dan Panggilan Kaedah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!