一、__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。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/193311.html