Python入門學習筆記( 魔法方法 迭代器)

2021-09-13 12:43:17 字數 2111 閱讀 4269

>>> for i in "fishc":

print(i) f

ishc

>>> links = {'你好':'',\

syntaxerror: invalid character in identifier

>>> links = {'你好':'',\

'我好':'',\

>>> for each in links:

print("%s -> %s" % (each,links[each]))

你好 ->

我好 ->

迭代器:

iter()

next()

>>> string = 'fishc'

>>> it = iter(string)

>>> next(it)

'f'>>> next(it)

'i'>>> next(it)

's'>>> next(it)

'h'>>> next(it)

'c'>>> next(it)

traceback (most recent call last):

file "", line 1, in next(it)

stopiteration

#類似的for迭代:

>>> for i in "fishc":

print(i) f

ishc

#while迴圈也可以實現

>>> string = 'fishc'

>>> it = iter(string)

>>> while true:

try:

each = next(it)

except stopiteration:

break

print(each) f

ishc

迭代器 魔法方法

iter()

-__iter__()  #返回迭代器本身,相當於return self

next()

-__next__()  #決定了迭代規則

例子: 下面的例子說明了二者的特性

class fibs:

def __init__(self):

self.a = 0

self.b = 1

def __iter__(self):

return self

def __next__(self):

self.a, self.b = self.b, self.a + self.b

return self.a

>>> for each in fibs:

print(each) 1

1235

8132134

5589

144......沒有設定引數範圍,斐波那契數列無限迴圈下去

修改:限定數列最大值在10以內

class fibs:

def __init__(self,n=10):

self.a = 0

self.b = 1

self.n = n

def __iter__(self):

return self

def __next__(self):

self.a, self.b = self.b, self.a + self.b

if self.a > self.n:

raise stopiteration

return self.a

>>> fibs = fibs()

>>> for each in fibs:

print(each) 1

1235

8

>>> fibs = fibs(100)  #限定數值在100以內

>>> for each in fibs:

print(each) 1

1235

8132134

5589

小甲魚 入門學習python筆記 魔法方法

new cls 物件例項化呼叫的第乙個方法,它的第乙個引數是這個類,而其他引數會直接傳遞給 init 方法 需要在基類的基礎上對其進行修改時重寫 new 方法 del 方法 只有在該類例項化的物件全部被del掉時,才呼叫 del 方法 python 中的運算子過載 class new int int...

Python筆記 魔法方法

1.不需要手動呼叫,會在合適的時機自動呼叫 2.這些方法都是以 開始,以 結束 3.方法名都是系統規定的,在合適的時機自己呼叫 class person object def init self,name,age 在建立物件時會自動呼叫這個方法 print init 方法被呼叫了 self.name...

python學習 十二 魔法方法

魔法方法是指用 包起來的方法,可以不直接呼叫方法或者呼叫其它函式時會呼叫到對應的魔法方法。這種拼寫表示名字有特殊含義,不要在自己的程式中使用這種名字。先對魔法方法的幾個特點強調一下 基本序列的魔法方法 當用len 函式去獲取乙個物件的長度時,會呼叫該物件內部的 len 方法,這個方法就會返回集合中所...