python基礎之(break、continue、pass、del)

1.跳過循環

通常,循環會不斷地執行代碼塊,直到條件爲假或使用完序列中的所有元素。但在有些情況下,你可能想中斷循環、開始新迭代(進入“下一輪”代碼塊執行流程)或直接結束循環。

1.1break(直接結束循環)

In [214]: for i in range(1,10):
     ...:     if i%2==0:break
     ...:     print(i)
     ...:
1

1.2continue(結束本次循環)

語句 continue 沒有 break 用得多。它結束當前迭代,並跳到下一次迭代開頭。這基本上意味着跳過循環體中餘下的語句,但不結束循環。這在循環體龐大而複雜,且存在多個要跳過它的原因時很有用。

In [215]: for i in range(1,10):
     ...:     if i%2==0:continue
     ...:     print(i)
     ...:
1
3
5
7
9

然而,在很多情況下,使用一條 if 語句就足夠了。

In [217]: for i in range(1,10):
     ...:     if i%2!=0: print(i)
     ...:
1
3
5
7
9

continue 雖然是一個很有用的工具,但並非不可或缺的。

2. pass 、 del 和 exec

2.1 pass(什麼都不做)

在你編寫代碼時,可將其用作佔位符。例如,你可能編寫了一條 if 語句並想嘗試運行它,但其中缺少一個代碼塊,在中間的代碼塊中添加一條 pass 語句即可。如下所示:

if name == 'Ralph Auldus Melish':
print('Welcome!')
elif name == 'Enid':
# 還未完成……
pass
elif name == 'Bill Gates':
print('Access Denied')

2.2 del(使用 del 刪除)

對於你不再使用的對象,Python通常會將其刪除(因爲沒有任何變量或數據結構成員指向它)。因爲這個就漂浮在計算機內存中,沒有任何名稱與之相關聯,再也無法獲取或使用它了,Python垃圾回收機制會將其刪除。
另一種辦法是使用 del 語句。

In [256]: items = {'name':'python'}
In [257]: sys.getrefcount(items)
Out[257]: 2
In [258]: del items
In [259]: items
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-259-92fc115b3de9> in <module>
----> 1 items
NameError: name 'items' is not defined

2.3 exec和eval(執行字符串及計算其結果)

有時候,你可能想動態地編寫Python代碼,並將其作爲語句進行執行或作爲表達式進行計算。
1.exec
函數 exec 將字符串作爲代碼執行。

	In [260]: exec('print("hello")')
Hello

然而,調用函數 exec 時只給它提供一個參數絕非好事。在大多數情況下,還應向它傳遞一個命名空間——用於放置變量的地方;否則代碼將污染你的命名空間,即修改你的變量。

In [261]: from math import sqrt
In [262]: sqrt(4)
Out[262]: 2.0
In [263]: scope = {}
In [264]: exec('sqrt=1',scope)
In [265]: scope['sqrt']
Out[265]: 1
In [266]: sqrt(4)
Out[266]: 2.0

2 . eval
eval 是一個類似於 exec 的內置函數。 exec 執行一系列Python語句,而 eval 計算用字符串表示的Python表達式的值,並返回結果( exec 什麼都不返回,因爲它本身是條語句)。

In [268]: eval(input("Enter an arithmetic expression: "))
Enter an arithmetic expression: 3+2
Out[268]: 5
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章