1. 程式人生 > >關於python 的__init__.py 以及 __all__ 的用法

關於python 的__init__.py 以及 __all__ 的用法

所表 文件 __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__ 的用法