91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python packages有什么用

發布時間:2020-09-21 14:08:32 來源:億速云 閱讀:141 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關python packages有什么用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

package指的就是包,它是一個有層次的文件目錄結構,它定義了由n個模塊或n個子包組成的python應用程序執行環境。通俗一點:包是一個包含__init__.py 文件的目錄,該目錄下一定得有這個__init__.py文件和其它模塊或子包。

但是這會分為兩種情況,第一種情況是一個空的__init__.py文件,另外一個情況是寫了代碼的__init__.py文件。不管是空的還是有內容的,這個目錄都會被認為是一個package,這是一個標識。

package的初始化工作

一個package 被導入,不管在什么時候__init__.py的代碼都只會被執行一次

>>> import package
hello world
>>> import package
>>> import package

由于 package 被導入時 __init__.py 中的可執行代碼會被執行,所以小心在 package 中放置你的代碼,盡可能消除它們產生的副作用,比如把代碼盡可能的進行封裝成函數或類。

__init__.py內的導入順序

當我嘗試導入

from package import something

import語句會首先檢查something是不是__init__.py的變量,然后檢查是不是subpackage,再檢查是不是module,最后拋出ImportError。

所以檢查順序如下:

(1)__init__.py 文件內變量

(2)是不是package內的subpackage

(3)是不是package內的module

看個例子

我們有一個如下結構的package

在a.py文件內有一個函數

def bar():
    print("Hello, function 'bar' from module 'a' calling")

在b.py文件內有一個函數

def foo():
    print("Hello, function 'foo' from module 'b' calling")

然后我們添加一個空的__init__.py 文件在simple_package里面。

我們看下,當我們import simple_package的時候到底會發生什么事情(在simple_package內激活Python shell或者simple_package的路徑被包含在python的sys.path或者在PYTHONPATH的環境變量中)

>>> import simple_package
>>> 
>>> simple_package
<module 'simple_package' from '/home/bernd/Dropbox (Bodenseo)/websites/python-course.eu/examples/simple_package
/__init__.py'>
>>> 
>>> simple_package.a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> 
>>> simple_package.b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined

我們可以看到simple_package已經被成功導入,但是a.py和b.py并沒有被導入

當然了,如果你希望使用import simple_package后自動加載a或者b 模塊,這里有兩種辦法。

第一種就是在__init__.py內導入a或者b模塊,然后保存再激活python的交互環境

#__init__.py
import a
import b

當你再次嘗試import simple_package后,就可以使用simple_package.a.bar()來使用模塊a中的bar()函數了。

第二辦法就是手動導入,當你想使用模塊a中的bar()函數時,需要手動導入

import simple_package.a as a

然后就是可以a.bar()來使用bar()函數了。

上述就是小編為大家分享的python packages有什么用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永济市| 海安县| 平定县| 乐昌市| 平远县| 榆中县| 息烽县| 平湖市| 读书| 衡阳县| 宣化县| 襄樊市| 和林格尔县| 沁源县| 大洼县| 衡南县| 阳朔县| 汝城县| 溆浦县| 新宁县| 嘉善县| 灵石县| 昌平区| 康乐县| 昌宁县| 浦县| 根河市| 乌鲁木齐县| 津南区| 大竹县| 西充县| 庐江县| 曲松县| 南乐县| 卓尼县| 卢湾区| 大关县| 绥芬河市| 湟源县| 隆尧县| 穆棱市|