您的位置:

Python中__init__.py文件的作用

一、__init__.py文件的定义

在Python中,每个目录下都有一个名为__init__.py的文件,这是一个空文件或者包含Python代码的文件。__init__.py文件的主要作用是将一个文件夹变成Python的包。

二、__init__.py文件的作用

1. 将一个文件夹变成Python的包

在Python中,一个包就是一个带有特定功能的文件夹,包含了一组相关的模块。在这个文件夹中,我们需要添加一个__init__.py文件,该文件的主要作用是将这个文件夹变成一个Python的包。

my_package/
    __init__.py
    module1.py
    module2.py

2. 控制包的导入行为

__init__.py文件还配置了包的导入行为,它可以控制模块和包的导入行为。__init__.py文件中定义的__all__变量可以指定导入该包时应该导入的模块。

__all__ = ['module1', 'module2']

3. 执行包的初始化代码

在Python中,当我们import一个模块或者包时,Python会首先执行该模块或者包的__init__.py文件。这意味着,我们可以在__init__.py文件中添加一些初始化代码,以便在导入包时执行。

# __init__.py
import os

def my_function():
    print("This is my function.")

my_variable = 1234

CUR_DIR = os.path.dirname(os.path.abspath(__file__))

三、__init__.py文件中的注意事项

1. __init__.py文件必须存在

如果你的文件夹想要变成一个Python包,那么它必须包含一个__init__.py文件。

2. __init__.py文件中的代码只会在导入包时执行一次

__init__.py文件中的代码只会在导入包时执行一次,而不是每次导入模块时都执行。这意味着,如果你在__init__.py文件中定义了一些全局变量或者执行了一些初始化代码,它们将会在第一次导入包时执行。

3. __init__.py文件中的代码对子模块的导入行为没有影响

__init__.py文件中的代码只会影响包的导入行为,而对子模块的导入行为没有影响。子模块仍然可以通过import语句单独导入。

四、示例代码

# __init__.py
import os

__all__ = ['my_module']

def my_function():
    print("This is my function.")

my_variable = 1234

CUR_DIR = os.path.dirname(os.path.abspath(__file__))

在这个示例中,__init__.py文件定义了一个函数my_function(),一个变量my_variable,以及一个常量CUR_DIR。