關於python 的__init__.py 以及 __all__ 的用法
阿新 • • 發佈:2018-11-21
所表 文件 __init__ pycharm 文件的 pack 發現 使用 了吧
1、在使用PyCharm新建python package時,會發現生成的包裏,有__init__.py 這個文件,而且這文件是空的。
既然是空的?那刪了吧!
刪了就悲劇咯,這貨算是package的一個標識,IDE就是通過它來判斷package的。
當然,它還有另外一個作用,暫且不提它,先說說__all__。
2、Python中的包和模塊有兩種導入方式:精確導入和模糊導入
以上圖為例,精準導入,假如A.py裏有函數A1(),A2()。
此時B.py需要引用它們,可以如下:
from hello.A import A1,A2
假如方法比較多,或許會偷懶,用模糊導入:
from hello.A import *
而__all__,則可以控制*所表示要引入的東西(模塊,函數,類等):
如果將__all__裏的sayA2去掉,B.py裏就會報sayA2查找不到的錯誤。
3、__init__.py的用法:
當然__all__也可以在__init__.py裏聲明,__init__.py是上圖hello目錄下的,可以理解為,該目錄下py文件的函數都統一到__init__.py來聲明
此時B.py裏只是引入hello目錄,並未精準到py文件。
關於python 的__init__.py 以及 __all__ 的用法