溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使Python中的自定義函數(shù)可以全局使用

發(fā)布時間:2023-05-08 11:03:44 來源:億速云 閱讀:153 作者:zzz 欄目:編程語言

本文小編為大家詳細介紹“怎么使Python中的自定義函數(shù)可以全局使用”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“怎么使Python中的自定義函數(shù)可以全局使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

我們在開發(fā)Python項目的時候,經(jīng)常會寫一些工具函數(shù)。為了在項目里面多個.py文件中使用這個工具函數(shù),就不得不在多個地方都導入它,非常麻煩。

例如下面這個例子:

怎么使Python中的自定義函數(shù)可以全局使用

在A.py和C.py文件都要使用clean_msg這個工具函數(shù),那么他們就都要從util.py中導入clean_msg。這似乎理所當然。

但今天我在看icecream/builtins.py[1]源代碼的時候,突然發(fā)現(xiàn)了一個高級用法,可以讓我們使用工具函數(shù)的時候,就像使用Python的print函數(shù)一樣,不用導入,而是直接使用。

我們先來看看效果:

怎么使Python中的自定義函數(shù)可以全局使用

大家注意A.py和C.py,我并沒有導入clean_msg而是直接使用了這個函數(shù)。并且運行完全正常。

關鍵原理就在入口文件main.py,被我框住的3行:

import builtins

from util import clean_msg
setattr(builtins, 'clean_msg', clean_msg)

在Python里面,所有內(nèi)置的函數(shù)或者類都在builtins模塊中,因此在代碼里面可以直接使用而不用導入?,F(xiàn)在只需要把我們自定義的工具函數(shù)注冊到builtins模塊中,就能讓它跟內(nèi)置函數(shù)有相同的效果。

如果想把一個工具函數(shù)注冊成為內(nèi)置函數(shù),只需要在入口文件中導入它,然后使用setattr把它設置成builtins模塊的一個屬性。第二個參數(shù)是你想全局調(diào)用的時候的名字,第三個參數(shù)就是你需要注冊的工具函數(shù)。名字可以跟工具函數(shù)的名字不相同,只要不跟已有的內(nèi)置函數(shù)重復就好了。

注冊完成以后,在這個項目的整個運行時中,任何.py文件里面都可以直接通過注冊的名字調(diào)用這個工具函數(shù),就跟調(diào)用內(nèi)置函數(shù)一樣。

讀到這里,這篇“怎么使Python中的自定義函數(shù)可以全局使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內(nèi)容的文章,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI