# 模块内置变量

#__package__

__package__​ 是 Python 的内置变量,在一个模块中用来指示该模块所在的包的名称。该变量通常被用于帮助动态地构建导入路径,以便当一个包从一个位置移动到另一个位置时,其内部导入仍然可以正常运行。

当一个模块是直接通过 Python 解释器执行时,__package__​ 的值会被设置为 None​。但是,当它通过导入语句导入到其他模块时,其值将取决于导入语句和文件布局。

如果一个模块是直接从包中导入,并且它的导入语句使用了绝对导入(例如 from mypackage import mymodule​), 那么 __package__​ 的值将设置为 mypackage​。

如果导入语句使用了相对导入(例如 from . import mymodule​),那么 __package__​ 的值将是包含该模块的子包(或父包)的名称。

在一个包或模块的代码中,如果需要导入一个包或模块,它们可以使用 __package__​ 变量来构造正确的导入路径。

#__file__

__file__​ 是 Python 的内置变量之一,用于指示当前文件的路径和文件名。如果一个文件是从脚本或解释器中直接运行的,那么 __file__​ 将会是该文件的绝对路径。如果一个文件是从另一个模块导入的,则 __file__​ 将会是相对路径或绝对路径的一部分。

但是一般可以根据os.path.abspath(__file__)​获取文件真实绝对路径

import os

print(__file__)  # 输出文件路径
print(os.path.abspath(__file__))  # 输出绝对路径

# __name__

__name__​ 是 Python 的内置变量之一,用于指示当前模块的名称。如果一个文件是从脚本或解释器中直接运行的,那么 __name__​ 的值将会是字符串 "__main__​";如果一个文件是从另一个模块导入的,则 __name__​ 将会是该模块的名称。