FI-*_*nfo -1 python python-3.x
__package__如果我的理解是正确的,则和变量之间的区别__name__是:
__init__.py。__name__将是完整路径,并将__package__是其目录。它是否正确?如果是这样,为什么 python 有必要在作用域中添加一个额外的变量,以便__package__有人也可以从中获取它__name__?
例如,对于一个models.py文件:
__name__==> apps.main.models__module__==> 应用程序.main__package__与__name__文件、路径或目录无关。如果您需要有关文件、路径和目录的信息,可以通过以下方式给出__file__,它存储 Python 查找模块文件的相对或绝对文件系统路径。
如导入系统文档中所述,__name__存储模块的完全限定名称,并__package__用于支持主模块的相对导入。无论哪个模块作为 Python 的入口点运行,都会获得 name '__main__',因此__name__对于那里的相对导入来说是无用的。__package__说明在这种情况下基于哪个包进行相对导入。
例如,
random.__package__是'',不是目录,因为random是(非包)顶级模块,并且内部有相对导入random不允许在内部进行相对导入。__package__,__name__因为__package__和__name__与文件系统无关。它没有__file__,因为文件系统中没有用于隐式命名空间包的文件。foo和文件and __init__.py,并且你从上面的目录运行,那么将作为一个模块运行和。bar.pyfoopython -m foo.barfoofoo/bar__name__ == '__main__'__package__ == 'foo'| 归档时间: |
|
| 查看次数: |
3505 次 |
| 最近记录: |