day14-異常和模塊

1.異常

1)異常捕獲

異常 - 程序執(zhí)行過程中出現(xiàn)錯(cuò)誤(報(bào)錯(cuò))
異常捕獲 - 讓程序出現(xiàn)異常的時(shí)候不崩潰,可以接著往后執(zhí)行
什么時(shí)候需要捕獲異常 - 明知道某個(gè)位置程序可能會(huì)出現(xiàn)異常妄均,但是又沒有辦法通過程序來控制的時(shí)候就使用異常捕獲

a.語法一:捕獲所有異常


try:
    代碼塊1
except:
    代碼塊2
其他語句

說明:
try - 關(guān)鍵字哪自,固定寫法
代碼塊1 - 和try保持一個(gè)縮進(jìn)的一條或者多條語句;需要捕獲異常的語句
except - 關(guān)鍵字壤巷,固定寫法
代碼塊2 - 和except保持一個(gè)縮進(jìn)的一條或者多條語句;出現(xiàn)異常后對(duì)異常進(jìn)行處理的代碼

執(zhí)行過程:先執(zhí)行代碼塊1寄症,如果執(zhí)行代碼塊1的時(shí)候出現(xiàn)異常,程序不崩潰(不報(bào)錯(cuò))释漆,直接執(zhí)行代碼塊2篮迎,執(zhí)行完代碼塊2再執(zhí)行其他語句男图;
如果執(zhí)行代碼塊1沒有出現(xiàn)異常甜橱,就直接執(zhí)行后面的其他語句

# 如果程序出現(xiàn)異常,那么程序就會(huì)直接結(jié)束难裆,不再執(zhí)行后面的語法
# print([1][1])   # IndexError: list index out of range
print('====')

try:
    print([1][1])
    age = int(input(':'))
    print('okk')
except:
    print('錯(cuò)了')
print('----')

b.語法二:捕獲指定異常


try:
    代碼塊1
except 錯(cuò)誤類型:
    代碼塊2
其他語句

執(zhí)行過程:先執(zhí)行代碼塊1譬胎,如果沒有異常,就直接執(zhí)行后面的其他語句偏化;
如果出現(xiàn)異常镐侯,并且異常類型和except后面的異常類型一樣,程序不崩潰韵卤,直接執(zhí)行代碼塊2崇猫,再執(zhí)行后面的語句
如果出現(xiàn)異常,并且異常類型和except后面的異常類型不一樣诅炉,程序直接崩潰

try:
    print('1')
    print({'name': 'a'}['age'])
    print('2')
    print([1, 2, 3][10])
except KeyError:
    print('鍵錯(cuò)誤')
finally:
    print('===')
print('------')

c.語法三涕烧、語法四:同時(shí)捕獲指定的多種異常


try:
    代碼塊1
except(異常類型1,異常類型2议纯,...):
    代碼塊2
    
try:
    代碼塊1
except 異常類型1:
    代碼塊11
except 異常類型2:
    代碼塊22
...

d.finally關(guān)鍵字

以上所有的語法結(jié)構(gòu)的最后都可以加一個(gè)finally,加完后不會(huì)影響原結(jié)構(gòu)的功能憨攒。
特點(diǎn):在try后面的代碼塊不管發(fā)生什么情況,finally后面的代碼塊都會(huì)執(zhí)行

try:
    print([1, 2, 3][10])
except:
    print('error')
finally:
    print('hh')
print('end')

2)拋出異常 - 主動(dòng)讓程序崩潰

raise 異常類型

print('=======拋出異常=======')
age = int(input('請(qǐng)輸入年齡:'))
if age < 0 or age > 200:
    raise ValueError

2.模塊

1)什么是模塊

python中一個(gè)py文件就是一個(gè)模塊玫坛,模塊名就是py文件的文件名

2)模塊之間的相互引用

怎么在一個(gè)模塊中去使用另一個(gè)模塊的內(nèi)容:導(dǎo)入模塊

1.import 模塊名 - 導(dǎo)入指定的模塊,導(dǎo)入后可以在當(dāng)前模塊中使用指定模塊中所有的全局變量炕吸。
以‘模塊名.變量名’的方式去使用

import test
print(test.a)  # 100
test.func1()
print(test.b)

2.from 模塊名 import 變量名1,變量名2树肃,變量名3瀑罗,... - 導(dǎo)入指定的模塊,導(dǎo)入后可以在當(dāng)前模塊中使用指定的全局變量劣像。
變量直接使用摧玫,不用加前綴

from test import func1, b
print(b)
func1()
# print(a)   # NameError: name 'a' is not defined

3.from 模塊名 import * - 導(dǎo)入指定的模塊,導(dǎo)入后可以在當(dāng)前模塊中使用指定模塊中所有的全局變量屋群。
變量直接使用坏挠,不用加前綴

from test import *
print(a, b)
func1()

4.import 模塊名 as 新的模塊名 - 導(dǎo)入指定模塊,導(dǎo)入到給模塊重新命名降狠;在當(dāng)前模塊中應(yīng)使用新的模塊名

import test as ts
ts.func1()

5.from 模塊名 import 變量名1 as 新變量名1喊熟,變量名2,變量名3 as 新變量名3芥牌,...

from test import a as t_a, b as t_b, func1 as f
a = 'name'
print(t_a, a, t_b)
f()

3)導(dǎo)入模塊的原理

當(dāng)我們通過import或者from-import去導(dǎo)入一個(gè)模塊的時(shí)候,會(huì)將這個(gè)模塊中的代碼全部執(zhí)行一遍
怎么導(dǎo)入模塊的時(shí)候選擇性的執(zhí)行部分代碼:

代碼段1   - 在被導(dǎo)入的時(shí)候會(huì)被執(zhí)行的代碼
if __name__ == '__main__':
    代碼段2  - 在被導(dǎo)入的時(shí)候不會(huì)被執(zhí)行的代碼谬俄,但是在當(dāng)前模塊直接執(zhí)行又會(huì)被執(zhí)行

原理:當(dāng)創(chuàng)建模塊的時(shí)候每個(gè)模塊中都有一個(gè)name屬性,用來保存當(dāng)前模塊的模塊名屎蜓。它的值默認(rèn)就是py文件的文件名钥勋。
當(dāng)直接運(yùn)行這個(gè)模塊的時(shí)候,模塊中的name屬性會(huì)臨時(shí)變成'main'

3.hashlib的使用

1)hashlib

hashlib是python提供用來產(chǎn)生摘要算法的模塊扼劈。摘要算法又叫哈希算法菲驴、離散算法。例如:md5先煎、sha相關(guān)算法巧涧。

1)哈希算法的特點(diǎn):
a.該算法不可逆(根據(jù)摘要(密文)不能獲取/推導(dǎo)出原文)
b.使用相同算法對(duì)相同的數(shù)據(jù)加密后的結(jié)果是一樣的
c.不同長(zhǎng)度的數(shù)據(jù)通過相同的算法加密后的密文的長(zhǎng)度是一樣的

2)怎么生成數(shù)據(jù)對(duì)應(yīng)的摘要(怎么加密)
1.根據(jù)算法創(chuàng)建hash對(duì)象
哈希對(duì)象 = hashlib.算法名()

hash1 = hashlib.md5()

2.對(duì)數(shù)據(jù)進(jìn)行加密
哈希對(duì)象.update(數(shù)據(jù)) - 指定加密數(shù)據(jù),數(shù)據(jù)必須是二進(jìn)制數(shù)據(jù)

hash1.update('123456'.encode())

補(bǔ)充:二進(jìn)制數(shù)據(jù)和字符串的相互轉(zhuǎn)換
二進(jìn)制數(shù)據(jù):bytes
字符串轉(zhuǎn)二進(jìn)制:bytes(字符串良风,encoding='utf-8') / 字符串.encode()
二進(jìn)制轉(zhuǎn)字符串:str(二進(jìn)制闷供,encoding='utf-8') / 二進(jìn)制.decode(encoding='utf-8')
3.獲取摘要(密文)
哈希對(duì)象.hexdigest() - 獲取以16進(jìn)制形式表示的密文(摘要),數(shù)據(jù)類型是字符串

pw = hash1.hexdigest()
print(pw)

4.時(shí)間戳

1)什么是時(shí)間戳

時(shí)間戳指的是一個(gè)時(shí)間到1970年1月1日0點(diǎn)0分0秒之間的時(shí)間差疑俭,用單位秒表示

t1 = time.time()
print(t1)    # 1568881812.9372895

# 本地時(shí)間婿失,元組形式
print(time.localtime())
print(time.localtime(time.time()))

# 本地時(shí)間,字符串可讀形式
print(time.asctime(time.localtime(time.time())))
print(time.ctime())

# 本地時(shí)間哩照,接收元組形式懒浮,返回字符串可讀形式
print(time.strftime('%Y-%m-%d %H-%M-%S', time.localtime()))
print(time.strftime('%a %b %d %H:%M:%S %Y', time.localtime()))

# 時(shí)間加減
t1 = time.time()
t2 = t1 + 10
print(time.asctime(time.localtime(t1)))
print(time.ctime(t2))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市次伶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赶撰,老刑警劉巖柱彻,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哟楷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡吓蘑,警方通過查閱死者的電腦和手機(jī)坟冲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門健提,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脐嫂,你說我怎么就攤上這事紊遵。” “怎么了暗膜?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵学搜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我聚磺,道長(zhǎng)炬丸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任矢沿,我火速辦了婚禮,結(jié)果婚禮上捣鲸,老公的妹妹穿的比我還像新娘。我一直安慰自己愁溜,他們只是感情好外厂,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布汁蝶。 她就那樣靜靜地躺著,像睡著了一般掖棉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耻讽,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天帕棉,我揣著相機(jī)與錄音,去河邊找鬼慰枕。 笑死即纲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匕坯。 我是一名探鬼主播拔稳,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼术奖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起采记,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤唧龄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后讽挟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丸冕,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年眼姐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了佩番。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拱镐,靈堂內(nèi)的尸體忽然破棺而出持际,到底是詐尸還是另有隱情,我是刑警寧澤益眉,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布姥份,位于F島的核電站,受9級(jí)特大地震影響展鸡,放射性物質(zhì)發(fā)生泄漏埃难。R本人自食惡果不足惜涤久,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一忍弛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔗彤,春花似錦惠昔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啦扬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胃榕,已是汗流浹背瞄摊。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留楔壤,地道東北人惯驼。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像隙畜,于是被迫代替她去往敵國(guó)和親说贝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)换淆,會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,249評(píng)論 0 9
  • 異常 1.什么是異常 運(yùn)行程序的時(shí)候程序報(bào)錯(cuò),又叫程序出現(xiàn)異常當(dāng)執(zhí)行程序的時(shí)候,如果出現(xiàn)異常,出現(xiàn)異常的線程會(huì)直接...
    舉顆鳳梨閱讀 327評(píng)論 0 4
  • 1.異常 運(yùn)行程序的時(shí)候程序報(bào)錯(cuò)躁愿,又叫程序出現(xiàn)異常;當(dāng)執(zhí)行程序的時(shí)候如果出現(xiàn)異常,出現(xiàn)異常的線程會(huì)直接奔潰彤钟,不再執(zhí)...
    Lingod閱讀 128評(píng)論 0 1
  • 一逸雹、異常處理 異常程序報(bào)錯(cuò),又叫程序出現(xiàn)異常當(dāng)執(zhí)行程序的時(shí)候梆砸,如果出現(xiàn)異常,出現(xiàn)異常的線程會(huì)直接崩潰休蟹,不再執(zhí)行后面...
    Wa_ngli閱讀 213評(píng)論 0 0
  • 夏日戀歌 你對(duì)我的愛 如此熾熱 找不到 溫柔的蔭涼 我明白你良苦用心 靜靜地等待 你的熱情 烘干愛的水份 我是熟透...
    遠(yuǎn)方的記憶閱讀 246評(píng)論 1 8