Mengesan Sama ada Pembolehubah ialah Fungsi
Dalam Python, menentukan sama ada pembolehubah mewakili fungsi boleh membingungkan. Pendekatan intuitif, isinstance(x, function), gagal disebabkan rujukan 'fungsi' yang tidak ditentukan.
Penyelesaian 1: callable()
Untuk Python 2.x atau 3.2 , callable() menyediakan semakan langsung dan mudah:
<code class="python">callable(x)</code>
Penyelesaian 2: panggilan Atribut (Python 3.x Sebelum 3.2)
Sebelum Python 3.2, seseorang mesti memeriksa objek untuk atribut __call__:
<code class="python">hasattr(x, '__call__')</code>
Kaveat dengan Jenis dan Pemeriksaan
Sambil menaip.Jenis Fungsi dan periksa Kaedah .isfunction wujud, ia mungkin memberikan hasil yang tidak dijangka. Fungsi bukan Python, seperti banyak binaan, mengembalikan Palsu menggunakan kaedah ini:
<code class="python">import types, inspect isinstance(open, types.FunctionType) # False callable(open) # True</code>
Amalan Terbaik: Menaip Itik
Daripada bergantung pada isinstance atau periksa, pendekatan pilihan adalah untuk memeriksa sama ada objek boleh dipanggil, meniru prinsip "jenis itik":
<code class="python">def quacks_like_a_function(x): return callable(x)</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Sama ada Pembolehubah Mewakili Fungsi dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!