天天看點

python 10個100以内随機整數編輯_我的Python自學之路

python 10個100以内随機整數編輯_我的Python自學之路

從決定不參加教育訓練班開始 到現在已經四個月了 期間做了很多筆記 可能不怎麼好 還是傳到知乎吧 自己回頭看也好

Python3

1 基礎文法

1.1 編碼

預設情況下,Python 3 源碼檔案以

UTF-8

編碼,所有字元串都是 unicode 字元串

1.2 辨別符

  • 第一個字元必須是字母或者是下劃線_
  • 辨別符的其他部分由字母,數字和下劃線組成
  • 辨別符對大小寫敏感

1.3 保留字

保留字即關鍵字,我們不能把它們用作任何辨別符名稱。Python 的标準庫提供了一個 keyword 子產品,可以輸出目前版本的所有關鍵字:

>>> 
           

1.4 注釋

# 第一個注釋
 
           

1.5 行與縮進

python最具特色的就是使用縮進來表示代碼塊,不需要使用大括号 {},pycharm中設定四個空格,以tab鍵縮進

1.6 變量

Python 變量命名規則:

  • 變量名必須以字母或下劃線字元開頭
  • 變量名稱不能以數字開頭
  • 變量名隻能包含字母數字字元和下劃線(A-z、0-9 和 _)
  • 變量名稱區分大小寫(age、Age 和 AGE 是三個不同的變量)

請記住,變量名稱區分大小寫

2 運算符

2.1 算術運算符

運算符描述執行個體

+加 - 兩個對象相加15 + 16 = 31-減 - 得到負數或是一個數減去另一個數16 - 15 = 1*乘 - 兩個數相乘或是傳回一個被重複若幹次的字元串2*2 = 4/除 - x 除以 y5 / 2 = 2.5%取模 - 傳回除法的餘數5 % 2 = .......1**幂 - 傳回x的y次幂5**2 = 5x5 = 25//取整除 - 向下取接近除數的整數9 // 2 >>>>2

2.2 比較運算符

以下假設變量a為10,變量b為20:

運算符描述執行個體

==等于 - 比較對象是否相等(a == b) 傳回 False。!=不等于 - 比較兩個對象是否不相等(a != b) 傳回 True。>大于 - 傳回x是否大于y(a > b) 傳回 False。<小于 - 傳回x是否小于y。所有比較運算符傳回1表示真,傳回0表示假。這分别與特殊的變量True和False等價。注意,這些變量名的大寫。(a < b) 傳回 True。>=大于等于 - 傳回x是否大于等于y。(a >= b) 傳回 False。<=小于等于 - 傳回x是否小于等于y。(a <= b) 傳回 True。

2.3 指派運算符

以下假設變量a為10,變量b為20:

運算符描述執行個體

=簡單的指派運算符c = a + b 将 a + b 的運算結果指派為 c+=加法指派運算符c += a 等效于 c = c + a-=減法指派運算符c -= a 等效于 c = c - a*=乘法指派運算符c *= a 等效于 c = c * a/=除法指派運算符c /= a 等效于 c = c / a%=取模指派運算符c %= a 等效于 c = c % a**=幂指派運算符c

= a 等效于 c = c

a//=取整除指派運算符c //= a 等效于 c = c // a

2.4 位運算符

運算符描述執行個體

&按位與運算符:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0同真為真|按位或運算符:隻要對應的二個二進位有一個為1時,結果位就為1。一真為真^按位異或運算符:當兩對應的二進位相異時,結果為1~按位取反運算符:對資料的每個二進制位取反,即把1變為0,把0變為1。~x 類似于 -x-1一起取反

2.5 成員運算符

運算符描述執行個體

in如果在指定的序列中找到值傳回 True,否則傳回 False。x 在 y 序列中 , 如果 x 在 y 序列中傳回 True。not in如果在指定的序列中沒有找到值傳回 True,否則傳回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中傳回 True。

2.6 身份運算符

身份運算符用于比較兩個對象在記憶體位址當中的存儲單元

運算符描述執行個體

isis 是判斷兩個辨別符是不是引用自一個對象

x is y

, 類似

id(x) == id(y)

, 如果引用的是同一個對象則傳回 True,否則傳回 Falseis notis not 是判斷兩個辨別符是不是引用自不同對象

x is not y

, 類似

id(a) != id(b)

。如果引用的不是同一個對象則傳回結果 True,否則傳回 False。

2.7 運算符優先級

以下表格列出了從最高到最低優先級的所有運算符:

運算符描述

**指數 (最高優先級)~ + -按位翻轉, 一進制加号和減号 (最後兩個的方法名為 +@ 和 -@)* / % //乘,除,取模和取整除+ -加法減法>> <<右移,左移運算符&位 'AND'^ |位運算符<= < > >=比較運算符== !=等于運算符= %= /= //= -= += *= **=指派運算符is is not身份運算符in not in成員運算符not and or邏輯運算符

3 資料類型

3.1 标準資料類型

Python3 中有六個标準的資料類型:

  • Number(數字)
  • String(字元串)
  • List(清單)
  • Tuple(元組)
  • Set(集合)
  • Dictionary(字典)

Python3 的六個标準資料類型中:

  • 不可變資料(3 個): Number(數字)、String(字元串)、Tuple(元組);
  • 可變資料(3 個): List(清單)、Dictionary(字典)、Set(集合)。

3.2 數字

Python3 支援

int、float、bool、complex(複數)

Python3中把 True 和 False 定義成關鍵字了,但它們的值還是 1 和 0,它們可以和數字相加。

内置的 
           

Python 支援三種不同的數值類型:

  • 整型(Int) - 通常被稱為是整型或整數,是正或負整數,不帶小數點。Python3 整型是沒有限制大小的,可以當作 Long 類型使用,是以 Python3 沒有 Python2 的 Long 類型。
  • 浮點型(float) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)
  • 複數( (complex)) - 複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型。
數學函數
函數傳回值(描述)

abs(x)傳回數字的絕對值,如abs(-10) 傳回 10ceil(x)傳回數字的上入整數,如math.ceil(4.1) 傳回 5fabs(x)傳回數字的絕對值,如math.fabs(-10) 傳回10.0floor(x)傳回數字的下舍整數,如math.floor(4.9)傳回 4pow(x,y)x**y 運算後的值。round(x , [,n])傳回浮點數x的四舍五入值,如給出n值,則代表舍入到小數點後的位數。sqrt(x)傳回數字x的平方根。

随機數函數

随機數可以用于數學,遊戲,安全等領域中,還經常被嵌入到算法中,用以提高算法效率,并提高程式的安全性。

Python包含以下常用随機數函數:

choice(seq)從序列的元素中随機挑選一個元素,比如random.choice(range(10)),從0到9中随機挑選一個整數。

randrange ([start,] stop [,step])從指定範圍内,按指定基數遞增的集合中擷取一個随機數,基數預設值為 1random()随機生成下一個實數,它在[0,1)範圍内。seed([x])改變随機數生成器的種子seed。如果你不了解其原理,你不必特别去設定seed,Python會幫你選擇seed。shuffle(lst)将序列的所有元素随機排序uniform(x, y)随機生成下一個實數,它在[x,y]範圍内。sample(lst,k)對lst序列中随機擷取k個元素,作為一個片段傳回

3.3 String字元串

Python中的字元串用單引号 ' 或雙引号 " 括起來,同時使用反斜杠 轉義特殊字元。

字元串的截取的文法格式如下:變量[頭下标:尾下标]

Python 字元串不能被改變。向一個索引位置指派,比如word[0] = 'm'會導緻錯誤。

注意:
  • 1、反斜杠可以用來轉義,使用r可以讓反斜杠不發生轉義。
  • 2、字元串可以用+運算符連接配接在一起,用*運算符重複。
  • 3、Python中的字元串有兩種索引方式,從左往右以0開始,從右往左以-1開始。
  • 4、Python中的字元串不能改變。
Python轉義字元
轉義字元描述

(在行尾時)續行符反斜杠符号n換行v縱向制表符t橫向制表符r回車f換頁

字元串格式化
符号描述

%s格式化字元串,print "string=%2s" % string # output: string=hello%d格式化整數,print "num=%3d" % num # output: num= 14%f格式化浮點數字,可指定小數點後的精度-------------print('num=%0.2f'%5.344),保留兩位小數f'hello {name}'使用f ' ', ' '内填入字元串,{ }内填入變量的名字.format'{0} {1} {0}' .foramt(),{ }内不指定位置,按預設順序

字元串内建函數
序号方法描述

1capitalize()将字元串的第一個字元轉換大寫2center(width,fillchar)傳回一個指定的寬度width居中的字元串,fillchar為填充的字元,預設的空格3count(str,beg=0,end=len(string))傳回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則傳回指定範圍内 str 出現的次數4endswith(suffix, beg=0, end=len(string))檢查字元串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍内是否以 obj 結束,如果是,傳回 True,否則傳回 False.5find(str,beg=0,end=len(string))檢測 str 是否包含在字元串中,如果指定範圍 beg 和 end ,則檢查是否包含在指定範圍内,如果包含傳回開始的

索引值

,否則傳回-16index(str,beg=0,end=len(string))跟find()方法一樣,隻不過如果str不在字元串中會報一個異常.7isdigit()如果字元串隻包含數字則傳回 True 否則傳回 False..8islower()如果字元串中包含至少一個區分大小寫的字元,并且所有這些(區分大小寫的)字元都是小寫,則傳回 True,否則傳回 False9isupper()如果字元串中包含至少一個區分大小寫的字元,并且所有這些(區分大小寫的)字元都是大寫,則傳回 True,否則傳回 False10join()以指定字元串作為分隔符,将 seq 中所有的元素(的字元串表示)合并為一個新的字元串11ljust(width,fillcahr)傳回一個原字元串左對齊,并使用 fillchar 填充至長度 width 的新字元串,fillchar 預設為空格。12lstrip()截掉字元串左邊的空格或指定字元。13replace(old,new,[,max])把 将字元串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。14spit(str=' ' ,num=string.count(str))num=string.count(str))以 str 為分隔符截取字元串,如果 num 有指定值,則僅截取 num+1 個子字元串15swapcase()将字元串大寫轉換為小寫,小寫轉換為大寫16upper()轉換字元串中的小寫字母為大寫17zfill()傳回長度為 width 的字元串,原字元串右對齊,前面填充0

3.4 清單

List(清單) 是 Python 中使用最頻繁的資料類型。

清單可以完成大多數集合類的資料結構實作。清單中元素的類型可以不相同,它支援數字,字元串甚至可以包含清單(所謂嵌套)。

清單是寫在方括号 [] 之間、用逗号分隔開的元素清單。

和字元串一樣,清單同樣可以被索引和截取,清單被截取後傳回一個包含所需元素的新清單。

清單截取的文法格式如下:變量[頭下标:尾下标]

注意:
  • 1、List寫在方括号之間,元素用逗号隔開。
  • 2、和字元串一樣,list可以被索引和切片。
  • 3、List可以使用+操作符進行拼接。
  • 4、List中的元素是可以改變的
通路清單中的值
list1 
           
更新清單

将新的值複制給指定的清單的下标: list[5] = 1998

删除清單元素

del list[2]

Python清單函數
序号方法描述

1list.append()在清單末尾添加新的對象(對象可以為清單,元組)2list.count()統計某個元素在清單中出現的次數3list.extend()在清單末尾一次性追加另一個序列中的多個值(用新清單來拓展原來的清單)4list.index(obj)從清單中找出某個值第一個比對項的索引位置5list.insert(index,obj)将對象插入清單6list.pop([index=-1])移除清單中的一個元素(預設最後一個元素),并且傳回該元素的值7list.remove(obj)移除清單中某個值的第一個比對項8list.reverse(obj)反向清單中元素9list.sort(key=None,reverse=False)對原清單進行排序10list.clear()清空清單11list.copy複制清單

3.5 元組

元組(tuple)與清單類似,不同之處在于元組的元素不能修改。元組寫在小括号 () 裡,元素之間用逗号隔開。

注意:
  • 1、與字元串一樣,元組的元素不能修改。
  • 2、元組也可以被索引和切片,方法一樣。
  • 3、注意構造包含 0 或 1 個元素的元組的特殊文法規則。
  • 4、元組也可以使用+操作符進行拼接

元組可以使用下标來通路元組中的值

元組中的元素值是不允許修改的

元組中的元素值是不允許删除,單我們可以使用del 語句來删除整個元組

3.6 Set集合

集合(set)是由一個或數個形态各異的大小整體組成的,構成集合的事物或對象稱作元素或是成員。

基本功能是進行成員關系測試和删除重複的元素

可以使用{ }或者set()函數建立集合,注意:建立一個空集合必須用set()而不是{ },因為 { } 是用來建立一個空字典。

1 添加元素

s.add(x) 添加元素x到集合中

s.update(x) x參數可以是清單,元組,字典

2 移除元素

s.remove(x) 如果元素不存在,則會發送錯誤

s.discard(x) 如果元素不存在,不會發生錯誤

s.pop() 随機删除集合中的一個元素

3 計算集合元素個數

4 清理集合

len(s)

s.clear()

5 集合内置方法

3.7 Dictionary字典

字典(dictionary)是Python中另一個非常有用的内置資料類型。

清單是有序的對象集合,字典是無序的對象集合。兩者之間的差別在于:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。

字典是一種映射類型,字典用 { } 辨別,它是一個無序的

鍵(key) : 值(value)

的集合。

鍵(key)必須使用不可變類型。在同一個字典中,鍵(key)必須是唯一的

1 通路字典裡的值

通過dict['key']來通路

2 修改字典

向字典添加新内容的方法是增加新的鍵/值對:

dict['key'] = value

删除字典元素

del dict['name'] # 删除鍵 'name'

dict.clear # 清空字典

del dict # 删除字典

popitem() # 随機傳回并删除字典中的最後一對鍵和值

3.8 Python資料類型轉換

函數描述

[int(x ,base])将x轉換為一個整數float(x)将x轉換到一個浮點數[complex(real ,imag])建立一個複數str(x)将對象 x 轉換為字元串repr(x)将對象 x 轉換為表達式字元串eval(str)*

用來計算在字元串中的有效Python表達式,并傳回一個對象*

tuple(s)将序列 s 轉換為一個元組list(s)将序列 s 轉換為一個清單set(s)轉換為可變集合dict(d)建立一個字典。d 必須是一個 (key, value)元組序列。frozenset(s)轉換為不可變集合chr(x)将一個整數轉換為一個字元ord(x)将一個字元轉換為它的整數值hex(x)将一個整數轉換為一個十六進制字元串oct(x)将一個整數轉換為一個八進制字元串

4 程式控制結構

4.1 條件控制

if elif else

if 嵌套

原則:先實行外側循環。滿足外側循環的條件後,開始内部循環,待内部循環結束後,重新判定外部循環條件是否繼續或結束。

4.2 循環控制

counter 
           
無限循環

while的條件永遠不為fasle時可用産生無限循環

4.3 終止語句

break

語句可用跳出for 和 while的循環體,終止當初的循環;如果你從for 或 while 循環中終止,任何對應的循環else将不執行

n 
           
continue

語句被用來告訴python跳過目前循環體塊的剩餘語句,繼續下一輪的循環

n 
           
pass

語句是空語句,為了不吃結構的完整性,一般用作占位符,不做任何事情

5 疊代器與生成器

5.1 疊代器

疊代是通路集合元素的一種方式

疊代器是一個可以記住周遊的位置的對象

疊代器對象從集合的第一個元素開始通路,直到所有的元素被通路完結束。疊代器隻能往前不會後退。

疊代器有兩個基本的方法:

iter()

建立疊代器對象 和

next()

輸出疊代器的下一個元素,沒有時報錯。

字元串,清單或元組對象都可用于建立疊代器:

>>> 
           
建立一個疊代器

把一個類作為一個疊代器使用需要在類中實作兩個方法

iter

() 與

next

() 。

_iter

() 方法傳回一個特殊的疊代器對象, 這個疊代器對象實作了

next__() 方法并通過 StopIteration 異常辨別疊代的完成。

next

() 方法會傳回下一個疊代器對象。

5.2 生成器

在 Python 中,使用了 yield 的函數被稱為生成器(generator)。

生成器是一個傳回疊代器的函數,隻能用于疊代操作,更簡單點了解生成器就是一個疊代器。

在調用生成器運作的過程中,每次遇到yield函數就會暫停并儲存目前所有的運作資訊,并在下一次執行next()fa方法時從目前位置繼續運作

調用一個生成器函數,傳回的是一個疊代器對象

以下執行個體使用yield實作斐波那契數列:

import 
           

6 函數

函數是組織好的,可重複使用的,用來實作單一,或相關聯功能的代碼段。

函數能提高應用的子產品性,和代碼的重複使用率。

6.1 函數的定義

你可以定義一個由自己想要功能的函數,以下是簡單的規則:

  • 函數代碼塊以 def 關鍵詞開頭,後接函數辨別符名稱和圓括号 ()
  • 任何傳入參數和自變量必須放在圓括号中間,圓括号之間可以用于定義參數。
  • 函數的第一行語句可以選擇性地使用文檔字元串—用于存放函數說明。
  • 函數内容以冒号起始,并且縮進。
  • return [表達式] 結束函數,選擇性地傳回一個值給調用方。不帶表達式的return相當于傳回 None。
  • 調用函數也相當簡單,使用函數名+圓括号()即可

6.2 參數的傳遞

在python中,類型屬于對象,變量是沒有類型的;它僅僅是一個對象的引用(一個指針)

a = [1,2] a = “runoob”

在上面的例子當中,指向List類型,也可以指向String類型

6.2.1

可更改與不可更改對象
在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。
  • 不可變類型: 變量指派 a=5 後再指派 a=10 ,這裡實際是新生成一個 int 值對象 10,再讓 a 指向它,而 指向5的引用被丢棄,不是改變a的值,相當于新生成了a。
  • 可變類型: 變量指派 la=[1,2,3,4] 後再指派 la[2]=5 則是将 list la 的第三個元素值更改,本身la沒有動,隻是其内部的一部分值被修改了。
Python函數的參數傳遞
  • 不可變類型:類似 c++ 的值傳遞,如 整數、字元串、元組。如fun(a),傳遞的隻是a的值,沒有影響a對象本身。比如在 fun(a)内部修改 a 的值,隻是修改另一個複制的對象,不會影響 a 本身。
  • 可變類型: 類似 c++ 的引用傳遞,如 清單,字典。如 fun(la),則是将 la 真正的傳過去,修改後fun外部的la也會受影響
參數
  • 必需參數: 以正确的順序傳入函數。調用時的數量必須和聲明時的一樣,必須傳入一個參數。
  • 關鍵字參數: 使用關鍵字參數來确定傳入的參數值。允許參數的順序與聲明時不一緻,因為python解釋器能夠用參數名比對參數值
  • 預設參數:調用函數時,如果沒有傳遞參數,則會使用預設參數。
def 
           
  • 不定長參數: 可能需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數,和上述 2 種參數不同,聲明時不會命名。

    *args 傳入的是元組;**kwargs傳入的是字典

匿名函數

python使用lambda來建立匿名函數,不再使用def這樣的标準語句來定義一個函數

  • lambda隻是一個表達式,函數體很簡單
  • lambda的主體不是代碼塊,僅僅能在lambda表達式中封裝有限的邏輯進去。
  • lambda函數擁有自己的命名空間。不能通路自己參數清單之外或全局命名空間裡的參數。
  • 雖然lambda函數看起來隻能寫一行,卻不等同于C或C++的内聯函數,後者的目的是調用小函數時不占用棧記憶體進而增加運作效率。
retunrn語句
return [表達式]

語句用于退出函數,選擇性地向調用方傳回一個表達式。不帶參數值的return語句傳回None。

7 命名空間/作用域

7.1 命名空間

命名空間(Namespace)是從名稱到對象的映射,大部分的命名空間都是通過 Python 字典來實作的。

命名空間提供了在項目中避免名字沖突的一種方法。各個命名空間是獨立的,沒有任何關系的,是以一個命名空間中不能有重名,但不同的命名空間是可以重名而沒有任何影響。

一般有三種命名空間:

  • 内置名稱(built-in names ), Python 語言内置的名稱,比如函數名 abs、char 和異常名稱 BaseException、Exception 等等。
  • 全局名稱(global names) ,子產品中定義的名稱,記錄了子產品的變量,包括函數、類、其它導入的子產品、子產品級的變量和常量。
  • 局部名稱(local names) ,函數中定義的名稱,記錄了函數的變量,包括函數的參數和局部定義的變量。(類中定義的也是)

Python 的查找順序為:

局部的命名空間去 -> 全局命名空間 -> 内置命名空間

命名空間的生命周期取決于對象的作用域,如果對象執行完成,則該命名空間的生命周期就結束。

7.2 作用域

作用域就是一個 Python 程式可以直接通路命名空間的正文區域。

在一個python程式中,直接通路一個變量,會從内到外依次通路所有的作用域直到找到

變量的作用域決定了在哪一部分程式可以通路哪個特定的變量名稱。作用域分為4種,分别是:

  • L(Local) :最内層,包含局部變量,比如一個函數/方法内部。
  • E(Enclosing) :包含了非局部(non-local)也非全局(non-global)的變量。比如兩個嵌套函數,一個函數(或類) A 裡面又包含了一個函數 B ,那麼對于 B 中的名稱來說 A 中的作用域就為 nonlocal。位于局部與全局作用域之間,可以是閉包函數外的函數中
  • G(Global) :目前腳本的最外層,比如目前子產品的全局變量。
  • B(Built-in) : 包含了内建的變量/關鍵字等。,最後被搜尋
全局變量和局部變量

定義在函數内部的變量擁有一個局部作用域,定義在函數外的擁有全局作用域。

局部變量隻能在其被聲明的函數内部通路,而全局變量可以在整個程式範圍内通路。調用函數時,所有在函數内聲明的變量名稱都将被加入到作用域中。如下執行個體

total 
           
global和nonlocal關鍵字

當内部作用域想修改外部作用域的變量時,就需要使用global和nonlocal關鍵字

num 
           

如果要修改嵌套作用域(enclosing 作用域,外層非全局作用域)中的變量則需要 nonlocal 關鍵字了

def 
           

8 子產品與包

8.1 子產品

子產品是一個包含所有你定義的函數和變量的檔案,其字尾名是.py。子產品可以被别的程式引入,以使用該子產品中的函數等功能。這也是使用 python 标準庫的方法。

子產品的好處:可維護性更強,友善代碼重用。

  • 1、import sys 引入 python 标準庫中的 sys.py 子產品;這是引入某一子產品的方法。
  • 2、sys.argv 是一個包含指令行參數的清單。
  • 3、sys.path 包含了一個 Python 解釋器自動查找所需子產品的路徑的清單。

子產品的導入:内置子產品 import os

  • dir() 列出對象的所有屬性及方法
  • help() 檢視類,方法的幫助資訊
  • __name__ 子產品的名稱
  • __file__ 檔案的全路徑

8.2 包

包是一種管理 Python 子產品命名空間的形式,采用"點子產品名稱"。

比如一個子產品的名稱是 A.B, 那麼他表示一個包 A中的子子產品 B 。

在導入一個包的時候,Python 會根據 sys.path 中的目錄來尋找這個包中包含的子目錄。

目錄隻有包含一個叫做

init

.py 的檔案才會被認作是一個包

9 OS

os

子產品提供了非常豐富的方法用來處理檔案和目錄,這裡不一一列舉

10 錯誤和異常

Python assert(斷言)用于判斷一個表達式,在表達式條件為 false 的時候觸發異常。

異常處理
try/except

try 語句按照如下方式工作;

  • 首先,執行 try 子句(在關鍵字 try 和關鍵字 except 之間的語句)。
  • 如果沒有異常發生,忽略 except 子句,try 子句執行後結束。
  • 如果在執行 try 子句的過程中發生了異常,那麼 try 子句餘下的部分将被忽略。如果異常的類型和 except 之後的名稱相符,那麼對應的 except 子句将被執行。
  • 如果一個異常沒有與任何的 excep 比對,那麼這個異常将會傳遞給上層的 try 中。
try/except........else
  • else 子句将在 try 子句沒有發生任何異常的時候執行。
  • 使用 else 子句比把所有的語句都放在 try 子句裡面要好,這樣可以避免一些意想不到,而 except 又無法捕獲的異常。
  • 異常處理并不僅僅處理那些直接發生在 try 子句中的異常,而且還能處理子句中調用的函數(甚至間接調用的函數)裡抛出的異常。
try-finally

try-finally 語句無論是否發生異常都将執行最後的代碼。(finally)

抛出異常

raise [Exception,[,args[,traceback]]]

繼續閱讀