PYTHON部分基礎(chǔ)D6

reflect反射

# commons.py

def login():
    print("這是一個登陸頁面失暂!")

def logout():
    print("這是一個退出頁面瓢捉!")

def home():
    print("這是網(wǎng)站主頁面逼裆!")

def run():
    inp = input("請輸入您想訪問頁面的url:  ").strip()
    modules, func = inp.split("/")
    obj = __import__("lib." + modules, fromlist=True)  # 注意fromlist參數(shù)
    if hasattr(obj, func):
        func = getattr(obj, func)
        func()
    else:
        print("404") 
if __name__ == '__main__':
    run()
請輸入您想訪問頁面的url:  commons/home
這是網(wǎng)站主頁面橱乱!
請輸入您想訪問頁面的url:  commons/find
404

異常處理

Python內(nèi)置了幾十種常見的異常辜梳,就在builtins模塊內(nèi),無需特別導(dǎo)入
所有的異常都是異常類泳叠,首字母是大寫的

# 基本語法:
try:
    pass
except Exception as ex:
    pass
# try…except…語句處理異常的工作機制如下:
# 首先作瞄,執(zhí)行try子句(在關(guān)鍵字try和關(guān)鍵字except之間的語句)
# 如果沒有異常發(fā)生,忽略except子句危纫,try子句執(zhí)行后結(jié)束宗挥。
# 如果在執(zhí)行try子句的過程中發(fā)生了異常,那么try子句余下的部分將被忽略种蝶。
# 如果異常的類型和 except 之后的名稱相符契耿,那么對應(yīng)的except子句將被執(zhí)行。

try:
    print("發(fā)生異常之前的語句正常執(zhí)行")
    print(1/0)
    print("發(fā)生異常之后的語句不會被執(zhí)行")
except ZeroDivisionError as e:
    print(e)
#--------------
結(jié)果:
發(fā)生異常之前的語句正常執(zhí)行
division by zero

函數(shù)f3()調(diào)用f2()螃征,f2()調(diào)用f1()搪桂,雖然是在f1()出錯了,但只需要在f3()進(jìn)行異常捕獲盯滚,不需要每一層都捕獲異常踢械。

def f1():
    return 10/0

def f2():
    f1()

def f3():
    f2()

try:
    f3()
except ZeroDivisionError as e:
    print(e)
--------------------------------------------------------
division by zero

通用異常:Exception

s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print('錯誤')

finally和else子句

# finally子句都會被執(zhí)行
# 當(dāng)else和finally同時存在時
try:
    pass
except:
    pass
else:
    print("else")
finally:
    print("finally")
--------------------------------------------------------
else
finally
# 如果有異常發(fā)生:
try:
    1/0
except:
    pass
else:
    print("else")
finally:
    print("finally")
---------------------------------------------------------
finally
sex = int(input("Please input a number: "))

try:
    if sex == 1:
        print("這是個男人酗电!")
    elif sex == 0:
        print("這是個女人!")
    else:
        print("好像有什么不符合常理的事情發(fā)生了D诹小撵术!")
        raise ValueError("非法的輸入")
except ValueError:
    print("這是個人妖!")
finally:
    print("finally")
print('END')
----------------------------------------------------------------
Please input a number: 0
這是個女人德绿!
finally
END
Please input a number: 2
好像有什么不符合常理的事情發(fā)生了:苫纭!
這是個人妖移稳!
finally
END

自定義異常
Python內(nèi)置了很多的異常類蕴纳,并且這些類都是從BaseException類派生的。

異常名 解釋
AttributeError 試圖訪問一個對象沒有的屬性
IOError 輸入/輸出異常
ImportError 無法引入模塊或包个粱;多是路徑問題或名稱錯誤
IndentationError 縮進(jìn)錯誤
IndexError 下標(biāo)索引錯誤
KeyError 試圖訪問不存在的鍵
KeyboardInterrupt Ctrl+C被按下古毛,鍵盤終止輸入
NameError 使用未定義的變量
SyntaxError 語法錯誤
TypeError 傳入對象的類型與要求的不符合
UnboundLocalError 試圖訪問一個還未被設(shè)置的局部變量
ValueError 傳入一個調(diào)用者不期望的值,即使值的類型是正確的
OSError 操作系統(tǒng)執(zhí)行錯誤
# 自定義異常應(yīng)該繼承Exception類都许,直接繼承或者間接繼承都可以
# 自定義異常的名字都以Error結(jié)尾
class MyExcept(Exception):

    def __init__(self, msg):
        self.message = msg

    def __str__(self):
        return self.message

try:
    raise MyExcept('我的異常!')
except MyExcept as ex:
    print(ex)
------------------------------------------------------
我的異常!

包(Package):

只有包含init.py文件的目錄才會被認(rèn)作是一個包稻薇!

image.png

init.py可以是空文件,也可以有Python代碼胶征,init.py本身就是一個模塊
例如在example/p1/init.py中包含如下代碼:
all = ["x"]
這表示當(dāng)你使用from example.p1 import *這種用法時塞椎,你只會導(dǎo)入包里面的x子模塊。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睛低,一起剝皮案震驚了整個濱河市案狠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钱雷,老刑警劉巖骂铁,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異罩抗,居然都是意外死亡拉庵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門套蒂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钞支,“玉大人,你說我怎么就攤上這事操刀∷感” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵馍刮,是天一觀的道長信夫。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么静稻? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任警没,我火速辦了婚禮,結(jié)果婚禮上振湾,老公的妹妹穿的比我還像新娘杀迹。我一直安慰自己,他們只是感情好押搪,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布树酪。 她就那樣靜靜地躺著,像睡著了一般大州。 火紅的嫁衣襯著肌膚如雪续语。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天厦画,我揣著相機與錄音疮茄,去河邊找鬼。 笑死根暑,一個胖子當(dāng)著我的面吹牛力试,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播排嫌,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼畸裳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淳地?” 一聲冷哼從身側(cè)響起怖糊,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎薇芝,沒想到半個月后蓬抄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丰嘉,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡夯到,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了饮亏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耍贾。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖路幸,靈堂內(nèi)的尸體忽然破棺而出荐开,到底是詐尸還是另有隱情,我是刑警寧澤简肴,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布晃听,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏能扒。R本人自食惡果不足惜佣渴,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望初斑。 院中可真熱鬧辛润,春花似錦、人聲如沸见秤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹃答。三九已至乎澄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間测摔,已是汗流浹背三圆。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留避咆,地道東北人舟肉。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像查库,于是被迫代替她去往敵國和親路媚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Python語言特性 1 Python的函數(shù)參數(shù)傳遞 看兩個如下例子樊销,分析運行結(jié)果: 代碼一: a = 1 def...
    伊森H閱讀 3,067評論 0 15
  • Python語言特性 1 Python的函數(shù)參數(shù)傳遞 看兩個如下例子整慎,分析運行結(jié)果: 代碼一: a = 1 def...
    時光清淺03閱讀 490評論 0 0
  • 定義類并創(chuàng)建實例 在Python中,類通過 class 關(guān)鍵字定義围苫。以 Person 為例裤园,定義一個Person類...
    績重KF閱讀 3,952評論 0 13
  • 要點: 函數(shù)式編程:注意不是“函數(shù)編程”,多了一個“式” 模塊:如何使用模塊 面向?qū)ο缶幊蹋好嫦驅(qū)ο蟮母拍罴粮傩浴?..
    victorsungo閱讀 1,510評論 0 6
  • 感覺自己喜歡女生拧揽。 但又喜歡很帥的男生。 我應(yīng)該是雙吧腺占!
    luckygirl_7490閱讀 190評論 0 0