Apabila kami membangunkan projek Python, kami sering menulis beberapa fungsi alat. Untuk menggunakan fungsi alat ini dalam berbilang fail .py dalam projek, anda perlu mengimportnya di beberapa tempat, yang sangat menyusahkan.
Sebagai contoh, contoh berikut:
Kedua-dua fail A.py dan C.py menggunakan fungsi alat clean_msg, maka kedua-duanya memerlukan Import clean_msg daripada util.py. Ini nampak semulajadi.
Tetapi hari ini apabila saya melihat kod sumber icecream/builtins.py[1], tiba-tiba saya menemui penggunaan lanjutan yang membolehkan kami menggunakan fungsi alat sama seperti menggunakan fungsi cetakan Python , gunakannya secara langsung.
Mari kita lihat kesannya dahulu:
Sila ambil perhatian A.py dan C.py, saya tidak mengimport clean_msg tetapi menggunakan ini secara langsung fungsi. Dan ia berjalan dengan baik.
Prinsip utama adalah dalam fail entri main.py, 3 baris yang saya bingkaikan:
import builtins from util import clean_msg setattr(builtins, 'clean_msg', clean_msg)
Dalam Python, semua fungsi atau kelas terbina dalam berada dalam modul terbina, jadi dalam Ia boleh digunakan terus dalam kod tanpa mengimport. Kini kami hanya perlu mendaftarkan fungsi alat tersuai kami ke dalam modul terbina, supaya ia boleh mempunyai kesan yang sama seperti fungsi terbina dalam.
Jika anda ingin mendaftarkan fungsi alat sebagai fungsi terbina dalam, anda hanya perlu mengimportnya dalam fail masukan, kemudian gunakan setattr untuk menetapkannya sebagai atribut modul terbina. Parameter kedua ialah nama apabila anda ingin memanggilnya secara global, dan parameter ketiga ialah fungsi alat yang anda perlukan untuk mendaftar. Nama boleh berbeza daripada nama fungsi utiliti, selagi ia tidak menduplikasi fungsi terbina dalam sedia ada.
Selepas pendaftaran selesai, semasa keseluruhan masa jalan projek ini, fungsi alat ini boleh dipanggil terus melalui nama berdaftar dalam mana-mana fail .py, sama seperti memanggil fungsi terbina dalam.
[1] icecream/builtins.py: https://github.com/gruns/icecream/blob/master/icecream/builtins.py
Atas ialah kandungan terperinci Bagaimana untuk menjadikan fungsi tersuai dalam Python tersedia secara global?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!