一、__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。