在最開始,我記錄一個內容:TPU,TPU是谷歌生產的專用于tensor計算的處理器,下面進入正式部分
條件判斷與三元運算式
python中只有if,if else,if elif,if elif else這幾種組合,判斷的條件不是None,0,False就可以執行;如果借助elif就可以實作多分支判斷:
#條件判斷 if else
age=66
if age<18:
print('young boy')
else:
print('adults')
#多分支判斷 if elif
age=66
if age<18:
print('young boy')
elif age>18 and age<60:
pringt('adults')
elif age>60:
print('others')
關于三元運算式,a if condition else b,它只是一個運算式,如果條件不是None或者0,False,就回傳a,否則回傳b
三元運算式通常用于條件判斷的場景:
a=1 if b>6 else 3
注意,不能按照if else的習慣,寫成a=1 if b>6 else a=3,因為1 if b>6 else 3本身就是一個運算式
回圈與回圈控制
回圈指的是for回圈,while回圈,控制是break,continue關鍵字的使用,只需要記住以下幾點:
1.for回圈:可設定迭代次數的回圈
2.while回圈:條件回圈,不能設定迭代次數
3.break:終止整個回圈
4.continue:跳過本次回圈
迭代器和生成器
迭代器和生成器在以往困惑了我很久,因此我在這里特別記錄一下這個部分
在了解迭代器之前,先明白什么是可迭代物件,一般來說,當創建了一個串列,集合,字典時,就生成了一個容器,比如:
一個串列[1,2,3,4]就是一個容器,這就是一個可迭代物件,所謂可迭代物件指可通過for回圈遍歷的物件,注意,目前這個容器并不能自己遍歷自己(通過物件自身的方法來遍歷自己,一般這個方法指的就是__next__),到這里,就該說出迭代器和可迭代物件的區別了,迭代器是具有__next__方法的可迭代物件,
通過iter()方法進行型別轉換后,可以將可迭代物件變成迭代器,在原檔案中,可迭代物件叫做iterable,迭代器叫做iterator,迭代器的__next__方法也有特點:只能迭代一次,不能回傳到以前的索引,下面是相關實體,助于理解:
#迭代器與可迭代物件的區別,迭代器多了一個方法__next__
print("This is iterator")
li=iter([1,2,3])
print(next(li))
print("for回圈開始")
for i in li:
print(i)
print("This is iterable")
lis=[1,2,3]
for i in lis:
print(i)
for i in lis:
print(i)

對于生成器,生成器必然是一個迭代器,生成器這個物件有兩種實作方式:第一種是用生成器運算式實作;第二種方式是由生成器函式實作
生成器運算式類似串列生成式,只是將[…]中括號換成(…)小括號,例如:
>>> li=(x for x in range(30) if x%3==0)
>>> li
<generator object <genexpr> at 0x7f79e7581d60>
用函式實作的生成器就是函式中使用了yield關鍵字,這就是為什么看到yield總會牽扯到生成器這個物件的原因:
#生成器函式(帶yield關鍵字的函式)實作生成器
def func(n):
for i in range(n):
yield i**2
gen=func(6)
print(gen)
print(next(gen))
print("借助for回圈")
for item in gen:
print(item)
正如gen=func(6)的宣告,gen就是一個生成器,結果如下:

例外與除錯
除錯BUG,BUG的意思是昆蟲,那為什么要叫找BUG,其實背后有個有趣的故事
在早期,人們使用繼電器編程,美國的一名海軍當時正在為完成一項任務進行編程,機器剛開始還好好的,但過了一會就出現了故障,每個實驗人員都覺得很奇怪,這名海軍爬上機器,在線路之中發現了飛蛾,飛蛾由于光和熱的吸引,靠近繼電器后被燒死,導致一組繼電器短路,于是這名海軍為機器除錯取了一個形象的名字:找昆蟲,也就是找BUG
發現例外有助于我們除錯代碼,使程式更穩定,在python中,常見例外如下:
NameError: 訪問到沒有宣告的變數
ZeroDivisionError: 除數是0
SyntaxError: 語法錯誤
IndexError: 索引超出范圍
KeyError :請求一個不存在的字典關鍵字
IOError: 輸入輸出錯誤,例如讀檔案,但檔案不存在
AttributeError: 訪問到未知的物件屬性
ValueError: 傳給函式的引數型別不正確,例如給數值型引數傳遞了字串
通常,我們將有疑惑的代碼放入try下,except會捕獲對應的例外,并執行對應指令:
try:
code
except ValueError:
print("值錯誤")
except NameError:
print("名稱錯誤")
else:
print("狀態良好")
通過捕獲例外,讓程式不中斷,確保執行完畢,實體如下:
try:
print(66/0)
except:
print("出現例外")
print("end")
雖然出現了除以零的錯誤,但程式依然執行完畢
除了系統發現例外,也可以通過關鍵字raise手動拋出例外:
def addfunc(a,b):
if type(a)!=type(b):
raise ValueError('型別錯誤')
return a+b
addfunc(5,'a')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/181543.html
標籤:其他
下一篇:Python函式初探
