Python3 自动条件导入?
Python 3 automatic conditional import?
有什么好的方法可以根据某个变量值导入不同的模块吗?
我的例子:
我有一个包含不同模块的文件夹:
- module_a.py
- module_b.py
在其他一些 python 文件中,我想根据某些配置值导入 module_a 或 module_b:
if configVal == 'a':
import module_a
elif configVal == 'b':
import module_b
有什么方法可以避免使用 if-elif 吗?所以不知何故自动?
赞:
@conditionalImport(configVal)
import module_
或者聪明的东西?
正常使用if/try,除了import
例如
import sys
if sys.version_info > (2, 7):
import simplejson as json
else:
import json
事实上,我们经常使用if else
或try catch
语句来编写Python2/3兼容代码或避免import errors
。这种情况很常见。
if sys.version_info[0] > 2:
xrange = range
或者使用try catch
来提升exception.After个已经重命名的模块,你可以将它们作为新名称导入。
try:
import mod
except ImportError:
import somemodule as mod
但是使用外部脚本制作脚本是一种不好的做法 work.It 依赖外部脚本导入模块在 Python 中是不常见的。
您可以使用 __import__
内置函数将模块名称声明为字符串。
这样你就可以对模块名进行正常的字符串操作了:
module = __import__("module_{}".format(configVal))
有什么好的方法可以根据某个变量值导入不同的模块吗? 我的例子:
我有一个包含不同模块的文件夹:
- module_a.py
- module_b.py
在其他一些 python 文件中,我想根据某些配置值导入 module_a 或 module_b:
if configVal == 'a':
import module_a
elif configVal == 'b':
import module_b
有什么方法可以避免使用 if-elif 吗?所以不知何故自动?
赞:
@conditionalImport(configVal)
import module_
或者聪明的东西?
正常使用if/try,除了import
例如
import sys
if sys.version_info > (2, 7):
import simplejson as json
else:
import json
事实上,我们经常使用if else
或try catch
语句来编写Python2/3兼容代码或避免import errors
。这种情况很常见。
if sys.version_info[0] > 2:
xrange = range
或者使用try catch
来提升exception.After个已经重命名的模块,你可以将它们作为新名称导入。
try:
import mod
except ImportError:
import somemodule as mod
但是使用外部脚本制作脚本是一种不好的做法 work.It 依赖外部脚本导入模块在 Python 中是不常见的。
您可以使用 __import__
内置函数将模块名称声明为字符串。
这样你就可以对模块名进行正常的字符串操作了:
module = __import__("module_{}".format(configVal))