python學習筆記 day21 包和異常

2022-02-06 21:23:38 字數 3309 閱讀 7343

通俗的講之前我們學序列化模組時,有個json 它其實是乙個資料夾(裡面有很多py檔案),應該就算是乙個包;

然後匯入包的時候,.前面一定是乙個包名,然後可以有兩種方式import 包名 或者 from 包 import 模組 (這種匯入方式 包那塊可以有. 但是import 後面必須是乙個變數名,絕對不能有.

首先建立一系列資料夾(包)和檔案(py檔案 模組)

import

osos.makedirs(

'glance/api

') #

使用os.makedirs('filename1/filename2')建立資料夾

os.makedirs('

glance/cmd')

os.makedirs(

'glance/db')

l= #

l中存放的是一系列檔案控制代碼

glance/__init__.py

','w'))

'glance/api/__init__.py

','w'))

'glance/api/test1.py

','w'))

'glance/api/test2.py

','w'))

'glance/cmd/__init__.py

','w'))

'glance/cmd/test1.py

','w'))

'glance/db/__init__.py

','w'))

'glance/db/test1.py

','w'))

map(lambda f :f.close(), l) # 利用map()函式

主要是挨個從放著檔案控制代碼的列表l中依次取值,然後傳給lambda函式 關掉該檔案

執行結果:

然後在api資料夾下的test1.py test2.py 檔案,cmd資料夾下的test1.py 檔案 和db資料夾下的test1.py 下面寫相應的print()語句 或者定義函式~

然後進行各種方式的匯入:

import

glance.api.test1

glance.api.test1

或者這種方式:

import

glance.api.test1 as test

test

或者:

from glance.api import

test1

test1

執行結果:

再來看一下test2.py 的內容:

然後我們匯入:

from glance.api import

test2

test2.func()

或者:

from glance.api.test2 import

func

func()

執行結果:

然後其他資料夾(包)的py檔案(模組)的匯入都跟上面的類似;

接下倆我們有乙個新的需求就是在test.py(與glance資料夾位於同一級目錄)中只寫 import glance 就可以使用glance.api.test1 執行test1.py 檔案 或者glance.api.test2.func()就可以執行api下面的test2.py中的func()函式~

這樣應該怎麼操作呢?

我們需要明確一點:匯入包時,都是自動會執行該包下面的__init__.py檔案!!!

先來驗證一下這個操作:

然後我們匯入 glance模組,看是否會執行glance包下面的__init__.py檔案中的內容:

我們先來看一下,在test.py中檢視模組路徑是什麼樣的:

執行結果:

所以相當於day06資料夾其實就是類似於根目錄的樣子~,不知道這樣說對不對,反正就是test.py是在day06資料夾下嘛,所以相當於它的根目錄直接就是day06 ,就是在test.py中匯入模組時,優先從da'y06這個目錄下面找有沒有該模組,然後我們繼續:

首先在glance包下面的__init__.py中寫:

然後在 api 下面的__init__.py中:

另外兩個也一樣:

進行完上面的操作之後

當我們在test.py中匯入glance後,我們就可以 直接拿著這個包名進行操作下面的任何乙個檔案了:

import

glance

glance.api.test1

glance.api.test2.func()

#api下面的test2.py中定義了乙個函式func

glance.cmd.test1

glance.db.test1

執行結果:

所以匯入包的時候需要格外注意~

另外,當你直接匯入py檔案或者通過包.包 匯入檔案(只要最後匯入的是py檔案 ---模組)匯入的那一刻就會執行該py檔案的內容;

但是當你最後匯入的是包時,它只會執行這個包下面的__init__.py這個是自動執行的~

day21 學習筆記

乙個python檔案有兩種用途 1.被當做程式執行 2.被當做模組匯入 二者的區別 ps name main import匯入模組在使用時必須加上字首 模組.優點 肯定不會與當前空間中名字衝突 缺點 顯得麻煩 from模組名import函式名 函式名是在當前位置的全域性變數,但是指向的記憶體位址是模...

day21 學習總結

string s new string 建立乙個空的字串序列 string s new string hello 建立乙個內容為 hello 的字串 string s hello 建立乙個內容為 hello 的字串 string s new string char chars 通過字元陣列建立乙個字...

python自動化學習筆記之DAY21

cookie 1 cookie與session cookie出現原因 由於http協議無法保持狀態,但是在認證的環境裡面,需要保持狀態,因此產生了cookie cookie工作原理 由伺服器產生內容,瀏覽器收到請求後儲存在本地,當瀏覽器再次訪問時,瀏覽器會自動帶上cookie,伺服器會通過cooki...