Python: wildcard subset import(Python:通配符子集导入)
本文介绍了Python:通配符子集导入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们都被告知使用from module import *
不是一个好主意。但是,是否可以使用通配符导入module
内容的子集?
例如:
mode.py:
MODULE_VAR1 = "hello"
MODULE_VAR2 = "world"
MODULE_VAR3 = "The"
MODULE_VAR4 = "quick"
MODULE_VAR5 = "brown"
...
MODULE_VAR10 = "lazy"
MODULE_VAR11 = "dog!"
MODULE_VAR12 = "Now"
MODULE_VAR13 = "is"
...
MODULE_VAR98 = "Thats"
MODULE_VAR99 = "all"
MODULE_VAR100 = "folks!"
def abs():
print "Absolutely useful function: %s" % MODULE_VAR1
显然我们不想使用from module import *
,因为我们将覆盖abs
函数。但假设我们确实希望所有MODULE_VAR*
变量都可以在本地访问。
简单地输入from module import MODULE_VAR*
不起作用。有什么办法可以做到这一点吗?
我使用了100个变量作为说明,因为执行from module import MODULE_VAR1, MODULE_VAR2, MODULE_VAR3, ..., MODULE_VAR100
显然非常笨拙,如果添加更多的变量(例如MODULE_VAR101
)也不会起作用。
推荐答案
您可以使用帮助器函数- 而且它不需要魔法就可以完成:
import re
def matching_import(pattern, module, globals):
for key, value in module.__dict__.items():
if re.findall(pattern, key):
globals[key] = value
现在,您可以执行以下操作:
from utils import matching_import
import constants
matching_import("MODULE_VAR.*", constants, globals())
以这种方式显式使用globals()
可避免帧自省魔术,这通常被认为是有害的。
这篇关于Python:通配符子集导入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Python:通配符子集导入


基础教程推荐
猜你喜欢
- 包装空间模型 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 求两个直方图的卷积 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01