Python导入语法

时间:2011-06-09 13:13:23

标签: python syntax import

这是:

import foo as bar

做同样的事情吗?

bar = __import__('foo')

有没有理由使用后者?

我正在阅读别人的代码,我找到了后者并且不确定为什么他们没有使用先前的语法

4 个答案:

答案 0 :(得分:6)

  

直接使用__import__()的情况很少见,除非您要导入名称仅在运行时已知的模块。

source

答案 1 :(得分:5)

这两个陈述做同样的事情。使用后一种语法的唯一原因是事先不知道模块名称。

答案 2 :(得分:2)

Fredrik Lundh来自Importing Python Modules

  

Python提供至少三个   导入模块的不同方式。您   可以使用import语句   from声明或内置声明   __import__功能。 (还有更多   设法做到这一点,但是   这超出了这个范围   小记。)

...

  

X = __import__('X')就像   import X,区别于此   你是1)传递模块名称为   字符串,和2)明确   将它分配给你的变量   当前的命名空间。

答案 3 :(得分:1)

正如其他人所说,这两种形式在语义上是相同的。直到运行时才知道模块名称时使用更晚的(__import__('foo'))。最常见的示例是在配置文件或插件加载系统中命名的模块。 Django的配置文件,例如在python配置文件中将插件模块定义为字符串(例如some_plugin = 'foo.plugin'),Django使用__import__加载这些模块。