day13總結(jié)(2019-08-07)

1.異常捕獲

當(dāng)程序發(fā)生異常的時候,默認情況會使程序崩潰,不能接著往后面繼續(xù)執(zhí)行;捕獲異常就是讓程序發(fā)生異常的時候不會崩潰,能夠繼續(xù)執(zhí)行程序。一般在知道代碼存在異常的時候,但又不能通過修改代碼去避免,這個時候就可以通過異常捕獲去處理異常。

2.捕獲異常的語法

1)語法一:捕獲所有的異常

try:
    代碼段1
except:
        代碼段2
finally:
     代碼段f

說明:try;except關(guān)鍵字,固定寫法;代碼段1需要捕獲異常的一條語句或多條語句,代碼段2出現(xiàn)異常后會執(zhí)行的一條語句或者多條語句。finally:關(guān)鍵字,捕獲異常的結(jié)構(gòu)后面的最后都可以添加一個finally,finally后面的代碼段一定會被執(zhí)行。
執(zhí)行過程:先執(zhí)行代碼段1,如果執(zhí)行代碼1的時候出現(xiàn)異常,程序不會崩潰會直接執(zhí)行代碼段2,如果沒有出現(xiàn)異常,不會執(zhí)行代碼段2,但會執(zhí)行finally后面的代碼段。
2)語法二:捕獲指定異常

try:
      代碼段1
except 異常類型:
        代碼段2
finally:
        代碼段3

說明:先執(zhí)行代碼1,如果執(zhí)行代碼塊1的時候發(fā)生異常,檢查出現(xiàn)的異常是否和except后面的異常類型相同,如果相同程序不奔潰,執(zhí)行代碼段2,否則程序直接崩潰,執(zhí)行finally后面的代碼段。
3)語法三:同時捕獲多個異常

try:
      代碼段1
except (異常類型1,異常類型2,....):
      代碼段2
finally:
     代碼段3

4)語法四:同時捕獲多個指定異常:

try:
    代碼段1
except 異常類型1:
      代碼段11
ecxept 異常類型2:
      代碼段22
finally:
      代碼段3

3.拋出異常:主動讓程序奔潰

語法:raise 異常類型
說明:異常類型必須是Exceptionde子類
個人總結(jié):程序在運行過程中會遇到異常,當(dāng)我們知道異常類型的時候,可以直接把異常類型放在except語句后面,這樣當(dāng)捕獲到一致的異常的時候,則保持運行程序不會崩潰,我們可以先使用raise 將異常拋出

class AgeError(Exception):
    def __str__(self):
        return '年齡值范圍不在0~150'


age = 1000
if not 0 <= age <= 150:
    raise AgeError
控制臺顯示raise 拋出的異常

Traceback (most recent call last):
  File "C:/Users/hxj/Desktop/作業(yè)&代碼/day13-異常和模塊/03-異常.py", line 144, in <module>
    raise AgeError
__main__.AgeError: 年齡值范圍不在0~150
class AgeError(Exception):
    def __str__(self):
        return '年齡值范圍不在0~150'


age = 1000
if not 0 <= age <= 150:
    raise FileNotFoundError

控制臺顯示raise拋出的異常:

Traceback (most recent call last):
  File "C:/Users/hxj/Desktop/作業(yè)&代碼/day13-異常和模塊/03-異常.py", line 142, in <module>
    raise FileNotFoundError
FileNotFoundError

4.模塊的使用

什么是模塊:python中一個py文件就是一個模塊。
怎么從一個模塊中使用另一個模塊中的內(nèi)容:
要在一個模塊中使用另一個模塊,就必須先導(dǎo)入該模塊,

1)語法:

a.import 模塊名

導(dǎo)入指定模塊后,可以在當(dāng)前模塊中使用導(dǎo)入模塊的所有全局變量,使用方式“模塊名.全局變量名”

import test
print(test.test_a, test.test_str1)
test.func1()

b.from 模塊名 import 變量名1,變量名2,...

導(dǎo)入后,可以使用import后面的所有變量,導(dǎo)入的全局變量直接在模塊中使用,使用時不用在前面添加“模塊名”。

from test import test_a, func1
print(test_a)

c.from 模塊名 import *

導(dǎo)入模塊中的所有全局變量,使用時不需要添加"模塊名"。

from test import *
print(test_a, test_str1)
func1()

d.import 模塊名 as 新模塊名

導(dǎo)入模塊后,使用時“新模塊名.變量名”

模塊重命名:
import fileManager as FM
FM.write_file(900)
FM.json_read()

e.from 模塊名 import 變量名1 as 新變量名1, 變量名2 as 新變量名2...

導(dǎo)入以后,使用時“新變量名”即可,不用加模塊名

from test import a as ta
a = 100
print(a, ta)

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

當(dāng)執(zhí)行導(dǎo)入模塊的代碼的時候,會直接執(zhí)行被導(dǎo)入的模塊中的所有代碼
1)重復(fù)導(dǎo)入的問題
import 在導(dǎo)入模塊的時候會自動檢測這個模塊之前是否已經(jīng)導(dǎo)入過,來避免一個模塊重復(fù)導(dǎo)入
2)阻止模塊中的內(nèi)容被其他模塊導(dǎo)入
將不需要被其他模塊執(zhí)行的語句寫入“if name=='main':"對應(yīng)的if語句中

1.包的使用

什么是包:一個帶有init.py的文件就叫做包。
包就是在工程里面創(chuàng)建的一個Python Package,里面存有自己編輯的python file,當(dāng)我們在其他py文件中使用到包中的函數(shù)的或者變量的時候,需要提前導(dǎo)入該包,導(dǎo)入的方式有以下幾種:
1)直接導(dǎo)入包
直接導(dǎo)入包的時候,當(dāng)前程序只執(zhí)行被導(dǎo)入包的init.py文件里面的程序。
2)從包中導(dǎo)入指定的模塊
語法:from 包名 import py1的文件名 py2的文件
py文件根據(jù)自己需要用的到導(dǎo)入進去
3)從包中的模塊導(dǎo)入變量
語法:from 包名.py文件名 import 變量名
例如: from animal.cat import c
print(c)

加密(hashlib)

hashlib是python3.x提供的一個hash加密的模塊;支持目前主流的一些加密運算:sha256、md5等。

1.加密特點

1)相等的數(shù)據(jù)采用同一個加密算法,保證加密的結(jié)果一樣
2)通過加密的數(shù)據(jù)不能反向獲取原數(shù)據(jù)
3)采用同樣的加密算法,不管原來數(shù)據(jù)的大小是多少,加密后的數(shù)據(jù)長度是一樣的

2.加密的步驟

1)根據(jù)加密的算法創(chuàng)建hash對象
hash = hashlib.md5()
2)對數(shù)據(jù)進行加密
hash.update(加密數(shù)據(jù)) -- 加密的數(shù)據(jù)必須是二進制數(shù)據(jù)
字符串轉(zhuǎn)二進制:
a. 字符串.encode(encoding='utf-8')
b. bytes(字符串,encoding='utf-8')
例如:hash.update('你好!'.encode())
3)個悲劇hash對象獲取加密后的數(shù)據(jù)(字符串類型)
result = hash.hexdigest()
print(result)

#完整的示例
import hashlib
pw = input('輸入密碼:')
hash = hashlib.md5()
hash.update(pw.encode())
result = hash.hexdigest()
print(result)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、異常 1.異常 運行程序的時候程序報錯,又叫程序出現(xiàn)異常。當(dāng)執(zhí)行程序的時候如果出現(xiàn)異常,出現(xiàn)異常的線程會直接崩...
    浩子_唯一號閱讀 266評論 0 1
  • 1.異常,程序出錯就叫程序中出現(xiàn)了異常當(dāng)執(zhí)行程序的時候出現(xiàn)異常,出現(xiàn)異常的線程會直接崩潰,不會再執(zhí)行該后面其他的代...
    棠球球閱讀 95評論 0 0
  • 異常和模塊 一.異常 1.異常運行程序的時候程序報錯,又叫程序出現(xiàn)異常當(dāng)執(zhí)行程序的時候如果出現(xiàn)異常,出現(xiàn)異常的線程...
    風(fēng)中逐月fzzy閱讀 196評論 0 0
  • 一、異常 1. 什么是異常 運行程序時程序報錯,稱為程序出現(xiàn)異常 當(dāng)執(zhí)行程序時如果出現(xiàn)異常,出現(xiàn)異常的線程會直接崩...
    Lis_reak閱讀 474評論 0 0
  • 異常模塊 review import json 1.文件操作 打開文件 -> 操作文件(讀、寫) -> 關(guān)閉...
    漫磋嗟閱讀 313評論 0 0

友情鏈接更多精彩內(nèi)容