中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

武定县| 巴青县| 冷水江市| 浙江省| 宜阳县| 旺苍县| 河北区| 教育| 巫山县| 舞钢市| 阳泉市| 大港区| 镇坪县| 崇仁县| 塔城市| 安陆市| 开鲁县| 江西省| 南岸区| 新疆| 莒南县| 疏附县| 池州市| 大理市| 东丽区| 陵川县| 长岭县| 江油市| 博爱县| 厦门市| 盐山县| 故城县| 博湖县| 广安市| 恩施市| 濮阳市| 葫芦岛市| 星座| 潮安县| 广宗县| 民丰县|