这是一个非常基本的问题,由@Mark Roddy写了一个非常广泛的答案 Use 'import module' or 'from module import'?
根据这个答案,每种方法都有优缺点,但结果是等价的,两者都起作用。你知道吗
这样做:
import module
或者
from module import foo
应该有用。你知道吗
我的问题:
考虑这个例子:
import distutils
print (distutils.util.strtobool('true'))
它给出:
> Traceback (most recent call last): File "<stdin>", line 1, in
> <module> AttributeError: module 'distutils' has no attribute 'util'
以及:
from distutils.util import strtobool
print (strtobool('true'))
其输出如下:
1
所以我很困惑。两者都应该起作用。为什么Python会为第一种方法生成一个异常?你知道吗
如果
import A
,然后尝试访问A.B
,则B
必须是模块A
中存在的有效属性。例如:如果
A
包含上述代码,那么在A
内部,B
是一个有效的本地名称,并扩展为模块A
的可访问属性。但是,如果模块A
没有定义任何B
,则在import A
时无法访问它。你知道吗现在,
import A.B
或from A.B import ...
显式地看的不是模块的属性,而是文件和文件夹。因此,即使在A.py
内部没有定义符号B
,只要有文件B.py
或文件夹B
,import
就会导入它。你知道吗这些是等效的:
如下所示:
但这不起作用,因为
mod2
没有导入:如果在
mod1.py
(或mod1/__init__.py
)中添加import mod2
,则mod2
将成为mod1
导出的值,最后一个示例将起作用。distutils
不导入distutils.util
,因此您必须自己导入它才能访问其导出的成员。你知道吗相关问题 更多 >
编程相关推荐