Python全景系列之控制流程盤點(diǎn)及進(jìn)階技巧
引言
歡迎來到我們的系列博客《Python全景系列》!在這個(gè)系列中,我們將帶領(lǐng)你從Python的基礎(chǔ)知識(shí)開始,一步步深入到高級(jí)話題,幫助你掌握這門強(qiáng)大而靈活的編程語法。無論你是編程新手,還是有一定基礎(chǔ)的開發(fā)者,這個(gè)系列都將提供你需要的知識(shí)和技能。
這是系列第三篇,在這篇文章中我們將全面深入地介紹 Python 的控制流程,包括條件語句、循環(huán)結(jié)構(gòu)和異常處理等關(guān)鍵部分,尤其會(huì)將列表解析、生成器、裝飾器等高級(jí)用法一網(wǎng)打盡。此外,我還將分享一些獨(dú)特的見解和研究發(fā)現(xiàn),希望能給你帶來新的啟發(fā)。文章的結(jié)尾,我們將有一個(gè) "One More Thing" 環(huán)節(jié),我會(huì)分享一個(gè)很特別但又很少人知道的有用的 Python 控制流程的技巧。
一、條件語句(If-Elif-Else)
Python的條件語句是通過一條或多條語句的執(zhí)行結(jié)果(True或者False)來決定執(zhí)行的代碼塊。條件語句的基本形式包括 if、if-else 和 if-elif-else 三種。
# if 語句
x = 10
if x > 0:
print("x is positive")
# if-else 語句
if x % 2 == 0:
print("x is even")
else:
print("x is odd")
# if-elif-else 語句
if x < 0:
print("x is negative")
elif x == 0:
print("x is zero")
else:
print("x is positive")注意Python的縮進(jìn)規(guī)則,這是Python語法的一大特色??s進(jìn)用于區(qū)分代碼塊,比如以上if-elif-else的代碼塊。此外,Python中沒有類似C++、Java的大括號(hào){}來控制語句塊,完全依賴于縮進(jìn)。
二、循環(huán)結(jié)構(gòu)(For和While)
Python中的循環(huán)有兩種,一種是for循環(huán),一種是while循環(huán)。
# for循環(huán)
for i in range(5):
print(i)
# while循環(huán)
count = 0
while count < 5:
print(count)
count += 1Python的for循環(huán)更像是一個(gè)遍歷循環(huán),它會(huì)遍歷序列中的每一個(gè)元素。而在很多其他語言中,for循環(huán)是通過條件判斷來控制循環(huán)的。Python中的range()函數(shù)在很多情況下都非常有用,特別是在循環(huán)結(jié)構(gòu)中。
三、異常處理(Try-Except)
在Python中,我們可以使用try-except語句來處理可能出現(xiàn)的錯(cuò)誤或異常。
try:
print(1 / 0)
except ZeroDivisionError:
print("You can't divide by zero!")Python的異常處理機(jī)制是一個(gè)很強(qiáng)大的工具,它可以幫助我們?cè)诔霈F(xiàn)錯(cuò)誤或異常時(shí)保持程序的正常運(yùn)行。不僅如此,Python的異常處理還支持多個(gè)except子句,這樣我們可以對(duì)不同類型的異常進(jìn)行不同的處理。此外,我們還可以使用finally子句,無論是否發(fā)生異常,finally子句中的代碼總會(huì)被執(zhí)行,常常用于進(jìn)行清理工作。
# 四、控制流程的高級(jí)用法!
Python 的控制流程不僅僅局限于簡單的條件判斷、循環(huán)和異常處理。Python 還有很多高級(jí)的控制流程工具,它們可以幫助我們更高效、更精簡地編寫代碼。以下是一些常見的高級(jí)控制流程工具:
1. 列表解析
列表解析是一種創(chuàng)建列表的簡潔方法,它在一行代碼中就可以完成循環(huán)和條件判斷等操作。以下是一個(gè)列表解析的例子:
squares = [x**2 for x in range(10)]
以上代碼會(huì)生成一個(gè)包含 0 到 9 的平方的列表。這個(gè)列表解析的過程可以理解為:對(duì)于每個(gè)在 range(10) 中的 x,計(jì)算 x 的平方,然后將結(jié)果添加到列表中。列表解析相比普通的循環(huán)語句,不僅代碼更簡潔,而且執(zhí)行速度更快。這是因?yàn)榱斜斫馕鲈趦?nèi)部實(shí)現(xiàn)了優(yōu)化,而普通的循環(huán)語句沒有。
2. 生成器表達(dá)式
生成器表達(dá)式和列表解析類似,但它生成的是一個(gè)生成器對(duì)象,而不是一個(gè)實(shí)際的列表。生成器對(duì)象是一個(gè)可迭代的對(duì)象,它在每次迭代時(shí)都會(huì)生成新的值,而不是一次性生成所有的值。以下是一個(gè)生成器表達(dá)式的例子:
squares = (x**2 for x in range(10))
以上代碼會(huì)創(chuàng)建一個(gè)生成器對(duì)象,這個(gè)對(duì)象會(huì)在每次迭代時(shí)生成一個(gè)平方數(shù)。你可以通過 next() 函數(shù)或者 for 循環(huán)來迭代這個(gè)對(duì)象。生成器表達(dá)式比列表解析更節(jié)省內(nèi)存,因?yàn)樗恍枰淮涡陨伤械闹?。這在處理大規(guī)模數(shù)據(jù)時(shí)非常有用。
3. 裝飾器
裝飾器是一個(gè)非常強(qiáng)大的工具,它允許我們修改一個(gè)函數(shù)或者類的行為,而不需要改變它的源代碼。以下是一個(gè)簡單的裝飾器例子:
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()以上代碼定義了一個(gè)裝飾器 my_decorator,它會(huì)在調(diào)用 say_hello 函數(shù)前后分別打印一段消息。@my_decorator 就是將 say_hello 函數(shù)裝飾成 my_decorator 的方式。裝飾器可以用來做很多事情,比如日志記錄、性能測試、事務(wù)處理、緩存等等。在很多情況下,使用裝飾器可以讓我們的代碼更加干凈,更易于管理和重用。
One More Thing??!
我在閱讀GitHub和各種技術(shù)博客中發(fā)現(xiàn)了一個(gè)很特別但又很少人知道的Python控制流程技巧——使用else子句在for和while循環(huán)中。
許多人可能不知道,for循環(huán)和while循環(huán)可以有一個(gè)可選的else子句,它在循環(huán)正常結(jié)束時(shí)執(zhí)行。如果循環(huán)被break語句終止,else子句將不會(huì)被執(zhí)行。
for i in range(5):
print(i)
else:
print("Loop finished!")
count = 0
while count < 5:
print(count)
count += 1
else:
print("Loop finished!")這個(gè)特性在很多情況下都非常有用,比如我們?cè)谘h(huán)中搜索一個(gè)元素,如果找到了就通過break語句終止循環(huán),如果循環(huán)正常結(jié)束還沒有找到,就執(zhí)行else子句中的代碼。
希望你在閱讀這篇文章后,能對(duì)Python的控制流程有更深入的理解,更多關(guān)于Python 控制流程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Django中日期處理注意事項(xiàng)與自定義時(shí)間格式轉(zhuǎn)換詳解
這篇文章主要給大家介紹了關(guān)于Django中日期處理注意事項(xiàng)與自定義時(shí)間格式轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
用python實(shí)現(xiàn)九九乘法表實(shí)例
大家好,本篇文章主要講的是用python實(shí)現(xiàn)九九乘法表實(shí)例,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
Python爬蟲教程知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Python爬蟲教程知識(shí)點(diǎn)總結(jié),有興趣的朋友們可以學(xué)習(xí)參考下。2020-10-10
python實(shí)現(xiàn)逆序輸出一個(gè)數(shù)字的示例講解
今天小編就為大家分享一篇python實(shí)現(xiàn)逆序輸出一個(gè)數(shù)字的示例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python中報(bào)錯(cuò) “TypeError: ‘list‘ object is&n
這篇文章主要介紹了Python中報(bào)錯(cuò) “TypeError: ‘list‘ object is not callable”問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Python實(shí)現(xiàn)農(nóng)歷轉(zhuǎn)換教程詳解
農(nóng)歷,是我國現(xiàn)行的傳統(tǒng)歷法。它是根據(jù)月相的變化周期,每一次月相朔望變化為一個(gè)月,參考太陽回歸年為一年的長度,并加入二十四節(jié)氣與設(shè)置閏月以使平均歷年與回歸年相適應(yīng)。本文將用Python實(shí)現(xiàn)農(nóng)歷轉(zhuǎn)換,需要的可以參考一下2022-03-03
Python爬蟲——爬取豆瓣電影Top250代碼實(shí)例
這篇文章主要介紹了Python爬取豆瓣電影Top250實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

