Python復合語句

3.6 Python復合語句

復合語句是包含其它語句(語句組)的語句;它們會以某種方式影響或控制所包含其它語句的執行。通常,復合語句會跨越多行,雖然在某些簡單形式下整個復合語句也可能包含于一行之內。
ifwhilefor語句用來實現傳統的控制流程構造。try語句為一組語句指定異常處理和/和清理代碼,而with語句允許在一個代碼塊周圍執行初始化和終結化代碼。
函數和類定義在語法上也屬于復合語句。
一條復合語句由一個或多個子句組成。一個子句則包含一個句頭和一個句體。特定復合語句的子句頭都處于相同的縮進層級。
每個子句頭以一個作為唯一標識的關鍵字開始并以一個冒號結束。
子句體是由一個子句控制的一組語句。子句體可以是在子句頭的冒號之后與其同處一行的一條或由分號分隔的多條簡單語句,或者也可以是在其之后縮進的一行或多行語句。只有后一種形式的子句體才能包含嵌套的復合語句。

丹棱ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯公司的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

3.6.1 if 語句

if 語句用于有條件地執行。if語句的一般語法格式如下:
if 條件表達式:
子句體1
[elif 條件表達式
子句體2]* # *號代表該字句可以是0或多個,下同
[else:
子句體3]
if語句通過對條件表達式進行求值,如果為真則執行相應的子句體,如果全都為假,可選的else子句體將會被執行。
注意:
1、FalseNone0""、()[]{}`都視為假

3.6.2 while 語句

while 語句用于在表達式保持為真的情況下重復地執行,一般語法格式為:
while 條件表達式:
子句體1
[else:
子句體2]
while語句會重復地檢驗表達式,并且如果其值為真就執行子句體1;如果表達式值為假(這可能在第一次檢驗時就發生),則可選的else子句體將會被執行。
如果在第一個子句體中使用了break語句,則將終止循環且不執行 else 子句體。
如果在第一個子句體中使用了continue 語句,則在執行時將跳過子句體中的剩余部分并返回檢驗表達式。
示例:求1-100整數的和

b = 0
s = 0
while b < 100:
    b += 1
    s += b
print(s)

5050


實例:判斷某個數是否是質數?

num = 87
i = 2
while i < num:
    if num % i == 0:
        print(f'{num} 不是質數')
        break
    i += 1
else:
    print(f'{num} 是質數')

87 不是質數


3.6.3 for 語句

for 語句用于對序列(例如字符串、元組或列表)或其他可迭代對象中的元素進行迭代,一般語法格式為:
for 變量 in 序列:
子句體1
[else:
子句體2]
for語句會每次從序列中拿一個元素出來并賦值給變量,然后執行子句體1。當序列中所有的元素都獲取完畢后,則可選的else子句體將會被執行。
和While語句一樣,如果在子句體1中使用了break語句,則將終止循環且不執行 else 子句體。
如果在子句體1中使用continue 語句,則在執行時將跳過子句體中的剩余部分并返回檢驗表達式。如果此時沒有下一項,則會執行else子句體(如果存在else子句的話)。
示例

langs = ['c', 'c++', 'python', 'java']
for i in langs:
    print(i)

c
c++
python
java


說明:
1、for 循環會對目標列表中的變量進行賦值。這將覆蓋之前對這些變量的所有賦值,包括在 for 循環體中的賦值,所以我們不能通過修改循環變量的值來達到修改循環次數的目的。

for i in [1, 2, 3]:
    print(i)
    i = 5

1
2
3

2、在使用for循環中,循環變量名最好用_開頭的變量名,甚至直接就用_這樣的變量名,這樣就不會和外部變量名稱沖突。
3、for循環經常搭配range函數使用。range函數可以生成一系列的整型數字。比如:range(5)可以生成:0,1,2,3,4。有關range函數的介紹,我們將在函數章節詳細介紹。

3.6.4 try 語句

try語句可以用來捕獲一組語句中指定的異常并處理,也可以用來清理代碼。try語句有兩種語法格式。
格式一:用來清理代碼
try:
子句體1
finally:
子句體2
子句體1中的語句將會一條一條的執行,如果某條語句報錯,則跳過子句體1中剩下的其他語句,直接執行子句體2中的語句。
格式二:用來捕獲異常并處理
try:
子句體1
[except 異常1: 或 except (異常1, 異常2):
子句體2]*
[else:
子句體3]
[finally:
子句體4]
語句塊1中的語句將會一條一條的執行,如果某條語句報錯,則跳過語句塊1中剩下的其他語句,然后根據異常原因到except語句中匹配異常,如果匹配到了,則執行相應的語句塊2中的語句。
如果try子句中的語句塊1沒有引發異常,也沒有執行return、continue或break語句,那么可選的else子句將會被執行。并且else子句中的異常不會被except子句捕獲并處理。
而無論情況如何,finally子句體在try語句結束前總會被執行。
1、可以通過sys.exc_info()來訪問異常的詳細信息。返回一個 3 元組,由異常類、異常實例和回溯對象組成。如下:

import sys
print(sys.exc_info())
try:
    5 + '5'
except:
    print(sys.exc_info())

(None, None, None)
(<class 'TypeError'>, TypeError("unsupported operand type(s) for +: 'int' and 'str'"), <traceback object at 0x000001564D>)


2、可以使用except:或者except Exception,因為在Python中所有的異常都是Exception異常的子類。如下:

try:
    1/0
except Exception:
    print('出錯啦~')

出錯啦~


3、可以使用as關鍵字獲取到出錯的原因,如下:

try:
    1/0
except Exception as err:
    print(f'出錯啦~,出錯原因:{err}')

出錯啦~,出錯原因:division by zero


3.6.5 with 語句

with 語句用于包裝帶有使用上下文管理器定義的方法的代碼塊的執行。這允許對普通的 try...except...finally 使用模式進行封裝以方便地重用。
關于with語句的詳細使用方法將在上下文管理器中詳細介紹。

3.6.6 match 語句

match語句是Python3.10版本中新增的功能。
在條件分支中,如果可能情況不多,可以使用if語句來實現。如果可能的情況比較多,則需要在if語句中使用多個elif子句來實現。從Python3.10版本以后就可以開始使用match語句來實現了。
match語句的基本語法格式如下:
match 變量/表達式:
case 值1 [約束項1]:
子句體1
case 值2 [約束項2]:
子句體2
...
[case :
*子句體
*] # 最多有一個,且必須是最后一個子句
1、match語句會對變量或者表達式進行求值,然后與case中的值匹配,如果匹配成功則執行相應case子句體,剩下所有的case子句則全部跳過不執行。如果全部匹配不成功,則最后可選的case _會被執行。
2、語法中的約束項采用的形式為if 表達式,只有case子句匹配成功,并且后面的約束項中的表達式也為真時,才執行相應的case子句體。
3、case _是一個必定匹配的case塊,意味著能夠匹配所有情況。match語句中最多可以有一個必定匹配的case塊,而且必須是最后一個。

3.6.7 函數定義、類定義

函數定義或者類定義也是語句。具體的函數定義和類定義將分別會在函數章節中詳細介紹。


練習
1、將教程中所有的復合語句示例全部手敲一遍并熟悉

文章名稱:Python復合語句
分享鏈接:http://m.kartarina.com/article18/dsogjgp.html

成都網站建設公司_創新互聯,為您提供靜態網站企業網站制作電子商務網站內鏈營銷型網站建設用戶體驗

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

小程序開發
主站蜘蛛池模板: 久久伊人亚洲AV无码网站| 亚洲熟妇无码AV在线播放| 免费无码又爽又刺激高潮视频| 无码人妻精品一区二区三区久久| 久久午夜无码鲁丝片秋霞| 亚洲AV无码一区二区二三区软件 | 亚洲国产成人无码AV在线影院| 白嫩少妇激情无码| 亚洲中文字幕伊人久久无码| 91精品无码久久久久久五月天| 成人免费无码精品国产电影| 免费A级毛片无码A∨| 中文字幕久无码免费久久 | 国产a v无码专区亚洲av| 亚洲av日韩av无码av| 国产亚洲精久久久久久无码| 一本大道无码人妻精品专区 | 中文字幕久久久人妻无码| 中文有码vs无码人妻| 无码人妻精品一区二| 无码日韩人妻av一区免费| 精品人妻大屁股白浆无码| 中文字幕丰满乱孑伦无码专区 | 国产精品va无码一区二区| 精品无码国产自产拍在线观看蜜| 亚洲精品无码久久久久秋霞| 18精品久久久无码午夜福利| 国产精品无码无需播放器| 久久久人妻精品无码一区| 日韩美无码五月天| 大胆日本无码裸体日本动漫| 亚洲爆乳AAA无码专区| 亚洲av中文无码乱人伦在线观看| 亚洲AV无码国产精品色| 无码国产精品一区二区免费式影视| 精品欧洲av无码一区二区三区| 无码少妇一区二区| 久久久久成人精品无码中文字幕| 日韩精品久久无码人妻中文字幕 | 久久久久精品国产亚洲AV无码| 欧洲无码一区二区三区在线观看|