当前位置: 首页 > 科技观察

每日一技:如何让你的工具函数在Python中全局可用?_0

时间:2023-03-16 22:08:02 科技观察

我们在开发Python项目的时候,经常会写一些实用函数。为了在项目中的多个.py文件中使用这个工具功能,你不得不在多个地方导入它,非常麻烦。例如下面的例子:A.py和C.py文件都使用了clean_msg工具函数,那么他们必须从util.py中导入clean_msg。这似乎是理所当然的。但是今天在看icecream/builtins.py[1]的源码的时候突然发现了一个高级用法,可以让我们像使用Python的print函数一样使用tool函数,不用导入,而是使用直接地。先来看看效果:请注意A.py和C.py,我没有导入clean_msg而是直接使用了这个函数。它工作得很好。关键原理在入口文件main.py里,我框出来的3行:so可以直接在代码中使用,无需导入。现在我们只需要在builtins模块中注册我们自定义的实用函数,使其与内置函数具有相同的效果即可。如果想将一个实用函数注册为内置函数,只需要在入口文件中导入,然后使用setattr将其设置为内置模块的属性即可。第二个参数是你要全局调用的名字,第三个参数是你需要注册的实用函数。该名称可以与效用函数的名称不同,只要它不与现有的内置函数重复即可。注册完成后,在本项目的整个运行过程中,任何.py文件都可以通过注册的名称直接调用本工具函数,就像调用内置函数一样。参考文献【1】icecream/builtins.py:https://github.com/gruns/icecream/blob/master/icecream/builtins.py