3.5 Python簡單陳述句
Python陳述句由關鍵字、識別符號、運算式組成,陳述句的根本作用就是執行某些修改操作,讓代碼發揮作用去做某些事,
陳述句從執行結構上來分有順序、條件、回圈結構,這3種結構可以實作任何演算法功能,
Python陳述句根據代碼占用的邏輯行數分為只占用1行的簡單陳述句和占用多行的復合陳述句,
3.5.1 賦值陳述句
賦值陳述句用于將名稱(重)系結到特定值,以及修改屬性或可變物件的成員項,
x = 23
x, y = 2, 3 # 多個變數的賦值
a = 2, 3
m = n = 11 # 鏈式賦值
3.5.2 assert 陳述句
assert陳述句又稱斷言陳述句,是在程式中插入除錯性斷言的簡便方式,
用assert陳述句可以讓程式在指定的時候檢測某個結果是否為預期結果,如果不是預期結果則立刻拋出錯誤并停止程式運行,這有利于我們今早發現程式的例外并對程式排錯,提高程式的強壯性,assert陳述句的語法結構為:
assert 運算式 [,例外訊息] # []號代表里面的內容是可選的,下同
assert運行規則為先對運算式進行求值,如果為真,則繼續執行程式接下來的其他代碼,否則,在沒有指定例外訊息時默認直接拋出AssertionError錯誤,有指定時,拋出AssertionError錯誤的同時提示例外訊息內容
>>> assert 1 < 0, '報錯啦~'
Traceback (most recent call last):
File "E:\studypy\tmp.py", line 1, in
assert 1 < 0, '報錯啦~'
AssertionError: 報錯啦~
assert 0 <= mathmark <= 100 # 斷言成績得分必須在0~100之間
3.5.3 pass 陳述句
pass 是一個空操作,當它被執行時,什么都不發生,它適合當語法上需要一條陳述句但并不需要執行任何代碼時用來臨時占位,例如:
if a > 50:
pass # 暫時沒有想好要做什么,先用pass占位
3.5.4 del 陳述句
del用于洗掉一個物件,當物件被洗掉后如果再次呼叫則會報錯:NameError
例如:
>>> a = 5
>>> del a
>>> a
Traceback (most recent call last):
File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File<input>, line 1, in
NameError: name 'a' is not defined
3.5.5 return 陳述句
return陳述句一般只會用于函式定義中,當使用return陳述句后會離開當前函式呼叫,并以return后面跟著的物件作為函式的回傳值,
關于return陳述句將在后續的函式中詳細介紹,
3.5.6 yield 陳述句
yield 陳述句在語意上等同于 yield 運算式,
yield 運算式和陳述句僅在定義生成器函式時使用,并且僅被用于生成器函式的函式體內部,在函式定義中使用 yield 就足以使得該定義創建的是生成器函式而非普通函式,
關于yield陳述句將在后續的生成器中詳細介紹,
3.5.7 raise 陳述句
raise陳述句用來直接引出一個例外,raise 陳述句的基本語法格式為:
raise [例外名[(例外原因)]]
其中,用 [] 括起來的為可選引數,其作用是指定拋出的例外名稱,以及例外資訊的相關描述,如果可選引數全部省略,則 raise 會把當前錯誤原樣拋出;如果僅省略 (例外原因),則在拋出例外時,將不附帶任何的例外描述資訊,
也就是說,raise 陳述句有如下三種常用的用法:
1、raise:單獨一個 raise,該陳述句引發當前背景關系中捕獲的例外(比如在 except 塊中),或默認引發 RuntimeError 例外,
>>> raise
Traceback (most recent call last):
File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File<input>, line 1, in
RuntimeError: No active exception to reraise
2、raise 例外類名稱:raise 后帶一個例外類名稱,表示引發執行型別的例外,如果不存在運算式,raise將直接引發RuntimeError例外,
>>> raise ValueError
Traceback (most recent call last):
File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File<input>, line 1, in
ValueError
3、raise 例外類名稱(描述資訊):在引發指定型別的例外的同時,附帶例外的描述資訊,
>>> raise ValueError('報錯啦~')
Traceback (most recent call last):
File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File<input>, line 1, in
ValueError: 報錯啦~
3.5.8 break 陳述句
break 在語法上只會出現于 for 或 while 回圈所嵌套的代碼,但不會出現于該回圈內部的函式或類定義所嵌套的代碼中,
它會終結最近的外層回圈,如果回圈有可選的 else 子句,也會跳過該子句,
如果一個 for 回圈被 break 所終結,該回圈的控制目標會保持其當前值,
當 break 將控制流傳出一個帶有 finally 子句的 try 陳述句時,該 finally 子句會先被執行然后再真正離開該回圈,
關于break陳述句將在后續的for回圈和while回圈中詳細介紹,
3.5.9 continue 陳述句
continue 在語法上只會出現于 for 或 while 回圈所嵌套的代碼中,但不會出現于該回圈內部的函式或類定義中,它會繼續執行最近的外層回圈的下一個輪次,
當 continue 將控制流傳出一個帶有 finally 子句的 try 陳述句時,該 finally 子句會先被執行然后再真正開始回圈的下一個輪次,
關于continue陳述句將在后續的for回圈和while回圈中詳細介紹,
3.5.10 import 陳述句
import陳述句用來匯入模塊或者包,之前已經在模塊章節詳細介紹過了,
3.5.11 global 陳述句
global 陳述句是作用于整個當前代碼塊的宣告,它意味著所列出的識別符號將被解讀為全域變數,要給全域變數賦值需要用到 global 關鍵字,不過自由變數也可以指向全域變數而不必宣告為全域變數,
在 global 陳述句中列出的名稱不得在同一代碼塊內該 global 陳述句之前的位置中使用,
在 global 陳述句中列出的名稱不能被定義為形式引數,也不能被作為 with 陳述句或 except 子句的目標,以及 for 回圈的目標串列、class 定義、函式定義、import 陳述句或變數標注等等,
3.5.12 nonlocal 陳述句
nonlocal 陳述句會使得所列出的名稱指向之前在最近的包含作用域中系結的除全域變數以外的變數,這種功能很重要,因為系結的默認行為是先搜索區域命名空間,這個陳述句允許被封裝的代碼重新系結區域作用域以外且非全域(模塊)作用域當中的變數,
與 global 陳述句中列出的名稱不同,nonlocal 陳述句中列出的名稱必須指向之前存在于包含作用域之中的系結(在這個應當用來創建新系結的作用域不能被無歧義地確定),
nonlocal 陳述句中列出的名稱不得與之前存在于區域作用域中的系結相沖突,
示例:
a = 1
def outer():
b = 2
def inner():
nonlocal b # 宣告外部函式的區域變數
print(f"inner b:{b}")
b = 3
global a # 宣告全域變數
a = 4
inner()
print(f"outer b:{b}")
outer()
print(f"a :{a}")
inner b:2
outer b:3
a :4
練習
1、將教程中所有的簡單陳述句示例全部手敲一遍并熟悉
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/480141.html
標籤:其他
下一篇:方法(Java)
