Python 中的 __file__ (特殊变量)

2025年3月17日 | 阅读 3 分钟

什么是特殊变量?

在Python中,有些变量使用双下划线定义,它们被称为Dunder或魔法方法。它们用于代码中的特殊目的,因此被称为特殊变量。

例如:__init__、__add__、__len__、__file__等。

__init__方法

此方法无需函数调用即可调用,并在我们创建类的任何对象或实例时调用。在其他编程语言中,它被称为构造函数。

__file__方法

在Python代码中,我们在当前代码中导入许多文件或模块,以重用相同的代码并提高效率。此方法包含我们为特殊目的导入到文件中的模块的路径。此变量的类型将是字符串,它可以为空或非空。如果导入的模块存在于数据库中,而不是在我们的系统中,那么就没有该模块的路径,此变量将为空。

如果模块存在于我们的本地系统中,那么肯定会有该模块的路径,并且它将存储在此变量中。此变量的值将由Python的导入系统确定。我们将看到一些示例来理解此变量的不同用例场景。

示例 1

Python 代码

test.py

test2.py

输出

__file__ (A Special Variable) in Python

说明

在上面的代码中,我们有一个名为test.py的模块,其中定义了一个将打印一些语句的方法。然后我们创建了一个名为test2.py的第二个模块,在该模块中我们导入了test.py模块。现在我们在test2.py中使用test.py的方法,并打印第一个模块的__file__变量。

我们使用这个特殊变量获得了test.py模块的路径。

示例 2

我们将导入多个模块到同一个文件中。

Python 代码

test1.py

test3.py

test4.py

test2.py

输出

__file__ (A Special Variable) in Python

说明

在上面的代码中,我们有三个不同的模块,分别命名为test1、test3和test4,其中我们定义了一些方法。我们还有一个主模块或文件,我们在其中导入了所有这三个模块。现在我们为每个模块使用了__file__特殊变量来获取每个相应模块的路径。

Example3

如果模块位于不同的文件夹中

Python 代码

add.py

test2.py

输出

__file__ (A Special Variable) in Python

说明

在上面的代码中,我们有一个名为add.py的模块,它有一个用于添加两个数字的方法。我们有一个名为test2.py的主模块,在该模块中我们导入了add模块,然后我们在当前模块中使用了add模块的addNumber方法。

我们对add模块使用了__file__特殊变量,它将打印add模块的确切路径。