Lesson 11 迭代器 生成器 PHP8程式碼規範
阿新 • • 發佈:2020-12-10
1.可迭代物件
- 可以對list、tuple、dict、set、str等型別的資料使用for…in…的迴圈語法從其中依次拿到資料進行使用,我們把這樣的過程稱為遍歷,也叫迭代。
- 把可以通過for…in…這類語句迭代讀取一條資料供我們使用的物件稱之為可迭代物件(Iterable)
2.推導式
- 推導式分為 列表推導式、字典推導式、集合推導式等。在這裡我們主要說其中一種也是用的最多列表推導式
- 列表推導式是Python構建列表(list)的一種快捷方式,可以使用簡潔的程式碼就創建出一個列表簡單理解就是由一箇舊的列表來構建出一個新的列表
# 列表推導式語法
list1 = ['qq', 'chat', 'gg' , 'ff']
# [表示式 for 變數 in 舊列表]
list2 = [i for i in list1]
print(list2)
# [表示式 for 變數 in 舊列表 if 條件]
list3 = [i for i in list2 if len(i) > 3]
print(list3)
3.生成器
建立生成器的方式
# 法1 推導式方法
list1 = [i for i in range(1, 101)]
gen = (i for i in list1 if i % 3 == 0)
print(gen)
list2 = [i for i in gen]
print(list2)
print(list2)
# 法2 函式方法
def fun():
i = 0
while True:
i += 1
yield i
print(12321)
r = fun()
print(r)
print(next(r))
print(next(r))
4.迭代器
- 迭代器是訪問集合元素的一種方式。迭代器是一個可以記住遍歷位置的物件。迭代器物件從集合的第一個元素開始訪問,直到所有元素被訪問完結束。
可以被next()函式呼叫並不斷返回下一個值的物件稱為迭代器Iterator
生成器是可迭代的,也是迭代器
列表是可迭代的,但不是迭代器
# 2.迭代器
list1 = [2, 4, 7, 9, 8, 7, 4]
tuple1 = (2, 4, 6, 7, 8, 7, 9, 6)
iterator1 = iter(list1)
iterator2 = iter(tuple1)
print(iterator1)
print(iterator2)
5.PHP8程式碼規範
PEP8 提供了 Python 程式碼的編寫約定. 本節知識點旨在提高程式碼的可讀性, 並使其在各種 Python 程式碼中編寫風格保持一致.
-
- 縮排使用4個空格, 空格是首選的縮排方式. Python3 不允許混合使用製表符和空格來縮排.
-
- 每一行最大長度限制在79個字元以內.
-
- 頂層函式、類的定義, 前後使用兩個空行隔開.
-
- import 匯入
匯入建議在不同的行,不建議例如:
import as,sys
但
from subprocess import Popen, PIPE
這種可以
- import 匯入
-
- 導包位於檔案頂部, 在模組註釋、文件字串之後, 全域性變數、常量之前. 匯入按照以下順序分組:
標準庫匯入
相關第三方匯入
本地應用/庫匯入
在每一組匯入之間加入空行
- 導包位於檔案頂部, 在模組註釋、文件字串之後, 全域性變數、常量之前. 匯入按照以下順序分組:
-
- Python 中定義字串使用雙引號、單引號是相同的, 儘量保持使用同一方式定義字串. 當一個字串包含單引號或者雙引號時, 在最外層使用不同的符號來避免使用反斜槓轉義, 從而提高可讀性.
-
- 表示式和語句中的空格:
避免在小括號、方括號、花括號後跟空格.
避免在逗號、分好、冒號之前新增空格.
冒號在切片中就像二元運算子, 兩邊要有相同數量的空格. 如果某個切片引數省略, 空格也省略.
避免為了和另外一個賦值語句對齊, 在賦值運算子附加多個空格.
避免在表示式尾部新增空格, 因為尾部空格通常看不見, 會產生混亂.
總是在二元運算子兩邊加一個空格, 賦值(=),增量賦值(+=,-=),比較(==,<,>,!=,<>,<=,>=,in,not,in,is,is not),布林(and, or, not
避免將小的程式碼塊和 if/for/while 放在同一行, 要避免程式碼行太長.
- 表示式和語句中的空格:
-
- 永遠不要使用字母 ‘l’(小寫的L), ‘O’(大寫的O), 或者 ‘I’(大寫的I) 作為單字元變數名. 在有些字型裡, 這些字元無法和數字0和1區分, 如果想用 ‘l’, 用 ‘L’ 代替.
-
- 類名一般使用首字母大寫的約定.
-
- 函式名應該小寫, 如果想提高可讀性可以用下劃線分隔.
-
- 如果函式的引數名和已有的關鍵詞衝突, 在最後加單一下劃線比縮寫或隨意拼寫更好. 因此 class_ 比 clss 更好.(也許最好用同義詞來避免這種衝突).
-
- 方法名和例項變數使用下劃線分割的小寫單詞, 以提高可讀性.