>>> emails =
>>> for name, email in emails.items():
... print(f' -> ')
'bob -> [email protected]'
'alice -> [email protected]'
# template 1
values =
for item in collection:
# -->
values = [expression for item in collection]
# template 2
values =
for item in collection:
if condition:
# -->
values = [expression
for item in collection
if condition]
# [::]是淺複製舉例
>>> a = [[1, 2], [3, 4]]
>>> b = a[::]
>>> a
[[1, 2], [3, 4]]
>>> b
[[1, 2], [3, 4]]
>>> a[0][0] = 10
>>> a
[[10, 2], [3, 4]]
>>> b
[[10, 2], [3, 4]]
可以看出b隨a變更,是因為淺複製只複製了元素的引用。
如下例所示:
class boundedrepeater:
def __init__(self, value, max_repeats):
self.value = value
self.max_repeats = max_repeats
self.count = 0
def __iter__(self):
return self
def __next__(self):
if self.count >= self.max_repeats:
raise stopiteration
self.count += 1
return self.value
# 相容python2
def next(self):
return self.__next__()
def bounded_repeater(value, max_repeats):
for i in range(max_repeats):
yield value
# 生成器函式
def generator():
for item in collection:
if condition:
yield expression
# 對應的生成器表示式
genexpr = (expression for item in collection if condition)
上述的bounded_repeater可以改寫如下:
bounded_repeater = ('hi' for i in range(3))
sum((x for x in range(10)))
# 可以簡寫成
sum(x for x in range(10))
《深入理解Python》讀書筆記
1 type函式返回任意物件的資料型別。type可以接收任何東西作為引數 整型 字串 列表 字典 元組 函式 類 模組 甚至型別物件,並返回它的資料型別。可以使用types模組中的常量來進行物件型別的比較。import mymodule import types type mymodule type...
《深入理解Python特性》讀書筆記
深入理解python特性 的讀書筆記 單前導下劃線 var 單末尾下劃線 var 雙前導下劃線 var 雙前導雙結尾下劃線var 單獨乙個下劃線 物件可以被當作函式使用,只要他實現了 call 方法 函式預設返回值為none,即所有函式都是有返回值的,不寫就是nonelambda x x 1表示就是...
讀書筆記 深入理解Python特性(一)
目錄 1.斷言 2.可維護性建議之逗號的放置 3.上下文管理器和with 4.下劃線 雙下劃線及其他 names alice bob dilbert 而不是names 一行定義,或者 names alice bob dilbert 始終堅持多行定義並且在末行放置逗號,這樣在git diff或者別人r...