生成器與常見內建函式
阿新 • • 發佈:2021-11-23
異常捕獲補充
# 異常捕獲的完整形式
try:
name
except NameError as e:
pass
except Exception as e:
pass
else:
pass
finally:
pass
# try中出現異常,如果except中有對應的異常,執行其中的程式碼。如果沒有異常則處理else,最後都執行finally程式碼。
迭代取值與索引取值對比
迭代取值不能重新求值,索引取值無論多少次皆可。迭代取值的物件在同一時間只佔一個記憶體空間,索引取值的物件比如列表中的元素皆以佔據記憶體空間。
生成器物件
生成器就是自定義迭代器。生成器物件會’停止‘在yield,遇到__next__方法再從停止位置繼續執行。
# 自定義range方法 def my_range(start,end=None,step): if end is None: end = start start = 0 while start < end: yield start start += step # yield還能傳值 def eat(name): print('%s進入餐廳。。。'%name) food = yield print('%s吃了%s'%(name,food)) g = eat('xie') print(g.__next__()) # xie進入餐廳。。。 # send既給yeild傳值又執行了__next__() print(g.send('牛肉')) # xie吃了牛肉
生成器表示式: (i**2 for i in range(10))
yield與return對比
程式執行遇到yield會停止,呼叫其__next__方法返回值並繼續執行,而return方法直接結束並返回值。
常見內建函式
# 1.abs() 取絕對值方法 print(abs(-1)) # 1 # 2. all() 容器型別資料中所有元素轉化為布林值都為True返回True,否則返回False # any() 容器型別資料中任意一個元素轉化為布林值為True則返回True,否則返回False l1 = [1,24,0] l2 = [1,-1,0] print(all(l1)) # False print(any(l2)) # True #3. bin() oct() hex() 進位制數轉化 #4. bytes()轉化為二進位制 str1 = 'long may the sunshine' res = bytes(str1,'utf8') res1 = str(res,'utf8') #5. callable() 檢視物件是否是可呼叫的 def index(): pass callable(index) # True #6. chr()返回數字對應的acsii碼錶的字元 ord()返回字元對應的ascii碼錶的數字 print(chr(65)) # A print(ord('A')) # 65 #7. complex() 複數 print(complex(123)) # (123+0j) #8. dir() 檢視當前目錄下能使用的方法 #9. divmod() 返回除數與餘數 divmod(5,2) # (2,1) #10. eval()可執行簡單python語法結構程式的字串 # exec()可執行復雜python語法結構程式的字串 eval("print('xie')") # xie func_str = ''' for i in range(5): print(i,end=' ') ''' exec(func_str) # 0 1 2 3 4 #11. isinstance() 判斷是否屬於某個資料型別 print(isinstance(1,int)) # True #12. pow() 返回x的y次冪 print(pow(2,4)) # 16 #13. round() 五舍六入 print(round(2.6)) # 3 #14. sum() 求和 l = [2,4,6,8,10] print(sum(l)) # 30