Python3自动条件导入?

Python3自动条件导入?,python,import,conditional,Python,Import,Conditional,有没有什么好方法可以根据变量值导入不同的模块? 我的例子是: 我有一个包含不同模块的文件夹: 模块a.py 模块_b.py 在其他一些python文件中,我想根据一些配置值导入模块a或模块b: if configVal == 'a': import module_a elif configVal == 'b': import module_b 有没有办法避免使用if-elifs?那么,不知何故,自动地 比如: 还是聪明的东西?除了导入,使用if/try是正常的 比如说 im

有没有什么好方法可以根据变量值导入不同的模块? 我的例子是:

我有一个包含不同模块的文件夹:

  • 模块a.py
  • 模块_b.py
在其他一些python文件中,我想根据一些配置值导入模块a或模块b:

if configVal == 'a':
    import module_a
elif configVal == 'b':
    import module_b
有没有办法避免使用if-elifs?那么,不知何故,自动地

比如:


还是聪明的东西?

除了导入,使用if/try是正常的

比如说

import sys
if sys.version_info > (2, 7):
    import simplejson as json
else:
    import json

使用if/try是正常的,导入除外

比如说

import sys
if sys.version_info > (2, 7):
    import simplejson as json
else:
    import json

事实上,我们经常使用
if-else
try-catch
语句来编写与Python2/3兼容的代码或避免
导入错误
。这是非常常见的

if sys.version_info[0] > 2:
    xrange = range
或者使用
try catch
引发异常。在重命名的模块之后,您可以将其作为新名称导入

try:
    import mod
except ImportError:
    import somemodule as mod

但使用外部脚本使脚本正常工作是一种不好的做法。依靠外部脚本导入Python中的模块是不常见的。事实上,我们经常使用
if-else
try-catch
语句来编写与Python2/3兼容的代码或避免
导入错误
。这是非常常见的

if sys.version_info[0] > 2:
    xrange = range
或者使用
try catch
引发异常。在重命名的模块之后,您可以将其作为新名称导入

try:
    import mod
except ImportError:
    import somemodule as mod

但使用外部脚本使脚本正常工作是一种不好的做法。依靠外部脚本在Python中导入模块是不常见的。

您可以使用
\uuuuuu import\uuuuu
内置脚本将模块名称声明为字符串

通过这种方式,您可以对模块名称执行正常的字符串操作:

module = __import__("module_{}".format(configVal))

您可以使用内置的
\uuuuu导入\uuuuu
将模块名称表示为字符串

通过这种方式,您可以对模块名称执行正常的字符串操作:

module = __import__("module_{}".format(configVal))

如果由于模块数量太多而担心此问题,则可以通过编程方式调用
importlib.import\u module()
来自动执行此类任务。对于2来说,您将避免使用更多的代码。请注意,使用
if
来决定导入哪个模块是完全正常的。看看官方的源代码。如果您担心模块数量太多,您可以通过编程调用
importlib.import\u module()
来自动执行此类任务。对于2来说,您将避免使用更多的代码。请注意,使用
if
来决定导入哪个模块是完全正常的。看看官方的源代码。