如何在Python中进行多次导入?

Edu*_*rdo 28 python import iterator require

在Ruby中,我没有多次重复"require"(Python中的"import")字

%w{lib1 lib2 lib3 lib4 lib5}.each { |x| require x }
Run Code Online (Sandbox Code Playgroud)

因此,它遍历"libs"和"require"(导入)它们中的每一个.现在我正在编写一个Python脚本,我想做类似的事情.有没有办法,或者我需要为所有人写"导入".

直接的"traduction"将类似于以下代码.无论如何,因为Python不会导入名为字符串的库,所以它不起作用.

requirements = [lib1, lib2, lib3, lib4, lib5]
for lib in requirements:
    import lib
Run Code Online (Sandbox Code Playgroud)

提前致谢

Bri*_*ian 48

对于已知模块,只需用逗号分隔它们:

import lib1, lib2, lib3, lib4, lib5
Run Code Online (Sandbox Code Playgroud)

如果您确实需要基于动态变量以编程方式导入,则ruby的字面翻译将是:

modnames = "lib1 lib2 lib3 lib4 lib5".split()
for lib in modnames:
    globals()[lib] = __import__(lib)
Run Code Online (Sandbox Code Playgroud)

虽然在你的例子中没有必要这样做.

  • 请注意,第一个代码片段违反了 Pep 8 的建议 https://www.python.org/dev/peps/pep-0008/#imports (2认同)

Joh*_*ard 17

试试这个:

import lib1, lib2, lib3, lib4, lib5
Run Code Online (Sandbox Code Playgroud)

您也可以通过这种方式更改它们导入的名称,如下所示:

import lib1 as l1, lib2 as l2, lib3, lib4 as l4, lib5
Run Code Online (Sandbox Code Playgroud)


Edg*_*yan 17

如果你想要多行:

from englishapps.multiple.mainfile import (
    create_multiple_,
    get_data_for_multiple
)
Run Code Online (Sandbox Code Playgroud)


yka*_*ich 9

import lib1, lib2, lib3, lib4, lib5


Dan*_*ain 6

今天我刚刚从一位同事那里了解到,根据PEP 8 风格指南,Python 中的导入实际上应该写在单独的行上:

import os
import sys
Run Code Online (Sandbox Code Playgroud)

风格指南认为是import sys, os错误的。