Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menjadikan fungsi tersuai dalam Python tersedia secara global?

Bagaimana untuk menjadikan fungsi tersuai dalam Python tersedia secara global?

WBOY
WBOYke hadapan
2023-05-08 09:43:071361semak imbas

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:

Bagaimana untuk menjadikan fungsi tersuai dalam Python tersedia secara global?

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:

Bagaimana untuk menjadikan fungsi tersuai dalam Python tersedia secara global?

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.

Rujukan

[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!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam