自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一日一技:如何讓自己的工具函數(shù)在Python全局可用?

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

我們?cè)陂_(kāi)發(fā)Python項(xiàng)目的時(shí)候,經(jīng)常會(huì)寫(xiě)一些工具函數(shù)。為了在項(xiàng)目里面多個(gè).py文件中使用這個(gè)工具函數(shù),就不得不在多個(gè)地方都導(dǎo)入它,非常麻煩。

例如下面這個(gè)例子:

圖片

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

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

我們先來(lái)看看效果:

圖片

大家注意A.py和C.py?,我并沒(méi)有導(dǎo)入clean_msg而是直接使用了這個(gè)函數(shù)。并且運(yùn)行完全正常。

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

import builtins

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

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

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

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

參考資料

[1] icecream/builtins.py: https://github.com/gruns/icecream/blob/master/icecream/builtins.py?

責(zé)任編輯:武曉燕 來(lái)源: 未聞Code
相關(guān)推薦

2024-02-20 22:13:48

Python項(xiàng)目Java

2021-03-12 21:19:15

Python鏈?zhǔn)?/a>調(diào)用

2021-09-13 20:38:47

Python鏈?zhǔn)?/a>調(diào)用

2021-07-27 21:32:57

Python 延遲調(diào)用

2024-07-30 08:11:16

2024-07-30 08:16:18

Python代碼工具

2021-10-15 21:08:31

PandasExcel對(duì)象

2022-06-28 09:31:44

LinuxmacOS系統(tǒng)

2022-03-12 20:38:14

網(wǎng)頁(yè)Python測(cè)試

2021-04-05 14:47:55

Python多線程事件監(jiān)控

2024-11-13 09:18:09

2021-04-12 21:19:01

PythonMakefile項(xiàng)目

2023-10-29 09:16:49

代碼安全命令

2020-05-19 13:55:38

Python加密密碼

2021-06-08 21:36:24

PyCharm爬蟲(chóng)Scrapy

2021-04-27 22:15:02

Selenium瀏覽器爬蟲(chóng)

2023-10-28 12:14:35

爬蟲(chóng)JavaScriptObject

2021-05-08 19:33:51

移除字符零寬

2024-11-11 00:38:13

Mypy靜態(tài)類型

2022-03-07 09:14:04

Selenium鼠標(biāo)元素
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)