说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
__file__
是 Python 中的一个特殊属性,用于获取包含模块文件的路径。这个属性通常在导入模块时使用,以获取模块文件的路径。对于在交互式环境中定义的模块,或者在字符串中执行的代码,__file__
属性将返回 None。
被加载模块所对应文件的路径名称,如果它是从文件加载的话。 对于某些类型的模块来说 __file__
属性可能是缺失的,例如被静态链接到解释器中的 C 模块。 对于从共享库动态加载的扩展模块来说,它将是共享库文件的路径名称。
假设有一个名为 example_module.py 的模块,其内容如下:
# example_module.py
print("This is example_module.py")
def example_function():
pass
然后我们可以在另一个脚本中导入并访问 example_module,并使用 __file__
属性来获取模块文件的路径:
import example_module
print("Module file path:", example_module.__file__)
在这个示例中,假设两个文件位于同一目录中。运行第二个脚本将输出 example_module.py
的完整路径。
但是需要注意的是,当在交互式环境中执行代码时,或者在字符串中执行代码时,__file__
属性将返回 None。这是因为这种情况下,Python 解释器无法确定模块的文件路径。
__cached__
和 __file__
是两个特殊属性,它们都与 Python 模块相关,但在功能和用途上有所不同。
__cached__
:
__cached__
属性存储了模块的缓存文件的路径。当一个模块被导入时,Python 会检查是否存在与该模块对应的缓存文件(通常是 .pyc 文件),如果存在,则会加载缓存文件而不是重新编译源文件。__file__
:
__file__
属性存储了模块文件的路径。当一个模块被导入时,Python 会使用这个属性来确定模块文件的位置。__file__
属性将为 None。__cached__
和 __file__
都与模块相关,但是一个用于缓存文件的路径,另一个用于源文件的路径。在导入模块时,Python 会使用 __file__
来确定源文件的位置,并根据需要使用 __cached__
加载缓存文件。
强烈 建议你使用 __spec__
来代替 cached。
https://docs.python.org/zh-cn/3/reference/import.html#file__
更新时间:2024-03-03 10:10:22 标签:python 特殊属性 模块