包
包的本質就是乙個包含__init__.py檔案的目錄
在python3中,即使包下沒有__init__.py檔案,import 包仍然不會報錯,而在python2中,包下一定要有該檔案,否則import 包報錯
凡是在匯入時帶點的,點的左邊都必須是乙個包
如果不想在匯入模組時打很多點,可以新增路徑:
#不管是哪種方式,只要是第一次匯入包或者是包的任何其他部分,都會依次執行包下的__init__.py檔案(我們可以在每個包的檔案內都列印一行內容來驗證一下),這個檔案可以為空,但是也可以存放一些初始化包的**。檢視可匯入模組的路徑:
(sys.path)
#新增路徑
路徑')
絕對匯入:直觀,但是不能匯入
相對匯入:用.或者..的方式最為起始(只能在乙個包中使用,不能用於不同目錄內) 缺點:包裡的模組如果想使用其它模組的內容只能使用相對路徑,使用了相對路徑就不能在包內直接執行了
在glance/api/version.py軟體開發規範#絕對匯入
from glance.cmd import
manage
manage.main()
#相對匯入
from ..cmd import
manage
manage.main(
## start.py
import
sys,os
base_dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #
獲取上層目錄
將上層目錄新增進直譯器路徑中
bin ---開始檔案 程式入口異常處理錯誤:語法錯誤conf ---配置檔案
core ---程式核心**
db ---資料檔案
lib ---包 自己寫的通用模組
log ---日誌 記錄
邏輯錯誤
常用異常
attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x使用try...except不中斷程式ioerror 輸入/輸出異常;基本上是無法開啟檔案
importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤
indentationerror 語法錯誤(的子類) ;**沒有正確對齊
indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]
keyerror 試圖訪問字典裡不存在的鍵
keyboardinterrupt ctrl+c被按下
nameerror 使用乙個還未被賦予物件的變數
syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)
typeerror 傳入物件型別與要求的不符合
unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,
導致你以為正在訪問它
valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的
萬能異常:exception
try獲取異常詳細資訊:
print('
1111')
print('
2222')
ret = int(input('
number >>>'))
print(ret*'*'
)except
exception as error:
print('
你錯了,老鐵
',error) # 如果錯了,會給出異常資訊
tryfinally: res_bb =eval(funcname)
except
:
print('
failed to execute :
'.format(t, sys.exc_info()))
finally和return相遇的時候 依然會執行
s1 = '自定義異常hello
'try
: int(s1)
except
indexerror as e:
(e)except
keyerror as e:
(e)except
valueerror as e:
(e)#
except exception as e:
#print(e)
else
:
print('
try內**塊沒有異常則執行我')
finally
:
print('
無論異常與否,都會執行該模組,通常是進行清理工作
')
class斷言:evaexception(baseexception):
def__init__
(self,msg):
self.msg=msg
def__str__
(self):
return
self.msg
try:
raise evaexception('
型別錯誤')
except
evaexception as e:
print(e)
assert 條件
python學習day21 模組和包
序列化模組 資料型別轉化成字串的過程 為了方便儲存和網路傳輸 三種模式 json dumps loads dump 和檔案有關 load 不能load多次 import json data json dic json.dumps data,sort keys true,indent 4,separa...
python學習筆記 day21 包和異常
通俗的講之前我們學序列化模組時,有個json 它其實是乙個資料夾 裡面有很多py檔案 應該就算是乙個包 然後匯入包的時候,前面一定是乙個包名,然後可以有兩種方式import 包名 或者 from 包 import 模組 這種匯入方式 包那塊可以有.但是import 後面必須是乙個變數名,絕對不能有....
day21 學習總結
string s new string 建立乙個空的字串序列 string s new string hello 建立乙個內容為 hello 的字串 string s hello 建立乙個內容為 hello 的字串 string s new string char chars 通過字元陣列建立乙個字...