Cara Menentukan sama ada Pembolehubah Mewakili Fungsi dalam Python
Dalam Python, ia boleh berguna untuk menyemak sama ada pembolehubah menghala ke fungsi. Pada mulanya, seseorang mungkin mempertimbangkan untuk menggunakan isinstance(x, function), tetapi Python menimbulkan NameError untuk kelas fungsi yang tidak ditentukan.
Objek Boleh Panggil dan hasattr
Untuk menentukan sama ada a pembolehubah ialah fungsi, Python menawarkan callable(). Untuk Python 2.x dan Python 3.2 , kaedah ini menyediakan fungsi untuk menyemak objek yang boleh dipanggil. Sebagai alternatif, untuk Python 3.x sebelum 3.2, seseorang boleh menggunakan hasattr(obj, '__call__') untuk memeriksa sama ada objek itu mempunyai ciri atribut __call__ bagi objek boleh panggil.
Kaveat dengan jenis.FunctionType dan inspect.isfunction
Semasa pendekatan menggunakan jenis.FunctionTypes atau inspect.isfunction telah dicadangkan, kaedah ini mempunyai had. Mereka mengembalikan False untuk fungsi bukan Python. Fungsi terbina dalam, dilaksanakan dalam C, gagal semakan ini, walaupun ia boleh dipanggil:
<code class="python">>>> isinstance(open, types.FunctionType) False >>> callable(open) True</code>
Oleh itu, mengesahkan sifat boleh panggil objek harus melibatkan pemeriksaan secara eksplisit keupayaannya untuk dipanggil, bukan pematuhannya kepada definisi kelas tertentu.
Atas ialah kandungan terperinci Bagaimanakah saya boleh Menentukan jika Pembolehubah Python Mewakili Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!