1. 程式人生 > 資訊 >英偉達迴應“英國將深入調查收購 Arm 交易”:繼續保持合作,將展示收購後的諸多優點

英偉達迴應“英國將深入調查收購 Arm 交易”:繼續保持合作,將展示收購後的諸多優點

可迭代物件

# 迭代
	迭代即更新換代的意思,每次更新都必須依賴於上一次的結果
""" 提供了一種不依賴索引取值的方式 """
# 可迭代物件
	內建有__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.異常捕獲使用的頻率越低越好