带别名的Python导入模块

带别名的Python导入模块,python,Python,我是Python3的新手,目前正在学习如何创建Python模块。我已经创建了下面的包结构 maindir test.py package __init__.py subpackage __init__.py module.py 这是我的module.py文件 name="John" age=21 这是我的test.py文件 import package.subpackage.module prin

我是Python3的新手,目前正在学习如何创建Python模块。我已经创建了下面的包结构

maindir
    test.py
    package
        __init__.py
        subpackage
            __init__.py
            module.py
这是我的module.py文件

name="John"
age=21
这是我的test.py文件

import package.subpackage.module
print(module.name)
当我运行test.py时,我收到了这个错误
NameError:name“module”未定义
但是,当我将import语句更改为
import package.subpackage.module as mymod
并使用
print(mymod.name)
打印名称时,它的工作就如预期的那样。它的印刷名是约翰。
我不明白为什么它只处理第二种情况而不处理第一种情况。

也许您尝试的是:

from package.subpackage import module
然后您可以引用
模块
作为之后的名称

如果您这样做:

import package.subpackage.module

然后,您的模块将被精确地调用为
包.子包.模块

,只需稍加阅读,我现在就理解了这种行为。如果我错了,请纠正我

使用此import语句的
import package.subpackage.module
样式,您必须使用其完全限定名访问对象。例如,在这种情况下
打印(包、子包、模块、名称)

使用别名,我可以使用
import package.subpackage.module将长名称缩短为mymod
,并使用
print(mymod.name)


简而言之,
打印(package.subpackage.module.name)
=
打印(mymod.name)

使用
打印(package.subpackage.module.name)
<代码>模块本身不在当前范围内。那么
导入系统
打印(sys.path)
如何工作?@vivekratnaparkhi这是因为
系统
是导入的名称。导入
package.subpackage.module
时,导入的是名称
package.subpackage.module
,而不是
module
谢谢@icedtrees!我现在明白了。我想了解这种导入方式的行为
import package.subpackage.module
。我仍然理解这种行为。您也可以如上所述导入短名称:
从package.subpackage导入模块
然后
打印(module.name)