Python黑帽程式設計2 4 流程控制

2021-09-22 11:14:16 字數 3072 閱讀 4109

python 中的 for 語句和c中的略有不同。通常的迴圈可能會由使用者來定義迭代步驟和中止條件,python 的 for 語句依據任意序列(鍊錶或字串)中的子項,按它們在序列中的順序來進行迭代。例如:

words = ['cat', 'window', 'defenestrate']

for word in words:

print(word,len(word))

執行結果如下:

圖3在迭代過程中修改迭代序列不安全(只有在使用鍊錶這樣的可變序列時才會有這樣的情況)。如果你想要修改你迭代的序列,可以迭代它的副本。使用切割標識就可以很方便的做到這一點:

words = ['cat', 'window', 'defenestrate']

for word in words[:]:

if len(word)>6:

words.insert(0,word)

print words

上面的**通過切片操作得到了words的乙個拷貝,迴圈過程中可以修改words列表但是不會對迴圈造成影響。執行結果如下:

圖4while和if的區別在於,if如果表示式為true的話會一次執行內部的**,而while會迴圈執行,直到表示式為false。例如:

count=0

while(count<9):

print 'the index is:',count

count +=1

執行結果如下:

使用range函式可以很方便的生成乙個等差系列。range函式完整的宣告如下:

range(start,end,step =1)

下面我們通過一小段**看看range的使用方法:

a=range(5)

b=range(2,5)

c=range(2,5,2)

print a

print b

for i in c:

print "value is",i

這段**示例了三種使用方式:

1)只有乙個引數時,傳入值為end,起始值為0,步長為1;

2)傳遞兩個引數時,傳入值為start和end,步長為1;

3)傳遞三個引數時,傳入值為start,end和步長。

xrange和range使用方法一樣,區別有以下兩點:

1)xrange不生成完整的列表,效率更高;

2)xrange只有在for迴圈中使用才有意義。

break

、continue

和pass

break 語句和 c中的類似,用於跳出最近的一級for或while迴圈。

迴圈可以有乙個else子句,它在迴圈迭代完整個列表(對於 for )或執行條件為 false (對於 while )時執行,但迴圈被 break 中止的情況下不會執行。

例如下面的**:

for n in range(2, 10):

for x in range(2, n):

if n % x == 0:

print(n, 'equals', x, '*', n//x)

break

else:

print(n, 'is a prime number')

上面的**迴圈乙個包含從2到9的乙個系列,內部的迴圈實際是判斷該數是不是素數。if語句如果為true的話證明找到了除2和本身以外的分解因子,證明這個數不是素數,接著會執行break此時會跳出當前迴圈,因為有了break語句,和當前for迴圈對應的else語句也不會執行。在相反的情況下,如果是素數,當前迴圈會執行完畢,else子句會執行。結果如下:

圖6continue 語句是從 c 中借鑑來的,它表示迴圈繼續執行下一次迭代,如下所示:

for num in range(2,10):

if(num %2 ==0):

continue

print num

這是一段輸出奇數的**,結果如下:

圖7pass 語句什麼也不做,相當於彙編的nop指令。它用於那些語法上必須要有什麼語句,但程式什麼也不做的場合。通常我們使用pass語句來進行佔位,比如規劃程式功能和結構的時候,我們想好要定義哪些類,哪些方法,但是還沒有具體實現的時候。比如:

def funcname(parameter_list):

pass

class classname(object):

pass

if a==0:

pass

else:

pass

流程控制的內容,就到此為止,下一節介紹函式。

2.5網路安全」—>」python黑帽程式設計進入即可。

網路安全」——>」python黑帽程式設計中找到對應的本文2.2.7節,有詳細方法。

Python黑帽程式設計2 6 模組

我們已經學習了如何在你的程式中定義一次函式而重用 如果你想要在其他程式中重用很多函式,那麼你該如何編寫程式呢?你可能已經猜到了,答案是使用模組。模組基本上就是乙個包含了所有你定義的函式和變數的檔案。為了在其他程式中重用模組,模組的檔名必須以 py為副檔名。模組可以從其他程式匯入以便利用它的功能。這也...

Python黑帽程式設計 2 7 異常處理

異常是個很寬泛的概念,如果程式沒有按預想的執行,都可以說是異常了。遇到一些特殊情況沒處理會引發異常,比如讀檔案的時候檔案不存在,網路連線超時。程式本身的錯誤也可以算作異常,比如把字串當整數來處理,拼寫錯誤。不論是系統還是框架,都會對基本異常進行分類,比如io異常,記憶體溢位等等。很多時候,針對特有的...

Python 黑帽程式設計大綱(變化中)

教程說明 1.1 虛擬機器安裝和配置kali linux 2016 1.2 使用vscode 搭建python開發環境 1.3 python執行時與包管理工具 1.4 你必須知道的網路基礎理論 請自學 1.5 利用wireshark練習資料報解析 2.0 第二章概述 2.1 python程式設計哲學...