英偉達迴應“英國將深入調查收購 Arm 交易”:繼續保持合作,將展示收購後的諸多優點
阿新 • • 發佈:2021-11-15
可迭代物件
# 迭代 迭代即更新換代的意思,每次更新都必須依賴於上一次的結果 """ 提供了一種不依賴索引取值的方式 """ # 可迭代物件 內建有__iter__都可稱為可迭代物件 """ 針對雙下劃線開頭,雙下劃下標結尾的方法 最為專業的讀法為雙下方法名 eg:雙下iter """ """ 最常見的含有__iter__的有: 字串、列表、字典、元組、集合、檔案物件 """ d = ['jaosn', 'tony', 'jerry'] print(d.__iter__()) print(d.__len__()) print(iter(d)) print(len(d)) """ 可迭代物件呼叫__iter__,就變成了迭代器物件(老母豬) __iter__可以簡寫為iter() 一般雙下法都有一個對應的簡化版本 方法名() """
迭代器物件
"""
迭代器物件:
即含有__iter__還含有__next__方法
如何生成迭代器物件:
在使用__iter__後即為迭代器物件
檔案物件本身即是可迭代物件又是迭代器物件
迭代器物件無論使用多少次的__iter__後都為迭代器物件
迭代器物件給我們提供了不依賴與索引取值的方式
"""
d = ['jaosn', 'tony', 'jerry']
res = d.__iter()
print(res.__next__())
# 迭代器物件執行__next__方法其實就是在迭代取值(for迴圈)
for迴圈的本質
l1 = [1,2,3,4,5,6,7,8,9,11,22,33,44,55] # 迴圈打印出列表中每個元素 但是不能使用for迴圈 __next__() next() # 1.先將列表轉為迭代器物件 res = l1.__iter__() # 2.迴圈執行__next__取值 while True: print(res.__next__()) for i in l1: print(i) """ for迴圈內部原理 1.將關鍵字in後面的資料先呼叫__iter__方法轉為迭代器物件 2.迴圈執行__next__方法 3.取完之後__next__會報錯 但是for迴圈會自動捕獲該錯誤並處理 res = 資料.__iter__() while True: 檢測程式碼是否會報錯 res.__next__() 如果報錯了則自動處理掉並結束while迴圈 """
異常捕獲
# 什麼是異常?? 指的是程式碼執行出錯會導致異常 異常發生後如果沒有解決方案則會導致整個程式結束。 # 異常的三個重要組成部分 1.traceback 在報錯內容最底下,點選往上數的第一個藍色字型,即可跳轉到有誤的程式碼處。 2.XXXError 錯誤的型別 3.錯誤型別冒號後的內容 錯誤的詳細原因(很重要,看完之後可能找到解決辦法) # 錯誤的種類 1.語法錯誤 不被允許的錯誤,出現立刻修改! 2.邏輯錯誤 可以被允許的,出現後修改即可 """ 修改邏輯錯誤的過程其實就是在重頭到尾理清思路的過程 """ print(name) # NameError l = [11,22,33] print(l[100]) # IndexError d = {'username':'jason'} print(d['xxx']) # KeyError int('abc') # ValueError """ 基本語法結構 try: 有可能會出錯的程式碼 except 錯誤型別 as e: 出錯之後對應的處理機制(e是錯誤的詳細資訊) except 錯誤型別 as e: 出錯之後對應的處理機制(e是錯誤的詳細資訊) except 錯誤型別 as e: 出錯之後對應的處理機制(e是錯誤的詳細資訊) """ # 怎麼修改 try: int(abc) except ValueError: print('值不是純數字') # 使用後在整數中寫其他資料,都不會報錯,只會提示 " 萬能異常 " try: '輸入想要不報錯的資料' except Exception: print('內容有誤') 異常捕獲句式和萬能異常: 1.有可能出現錯誤的程式碼才需要監測 2.有監測的程式碼越少越好 3.異常捕獲使用的頻率越低越好