python學習筆記(二)

python學習筆記(二)

  1. 斐波納契數列:兩個元素的總和確定了下一個數
a,b = 0,1
while b<=100:
	print(b,end=',')
	a,b = b,a+b
  1. if語句
#Python中沒有switch – case語句
if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3
  1. 循壞語句
#else是判斷條件False時執行,可以沒有,break跳出循壞體,countine退出當前循環,進入下一次循環
#python沒有do...while循環
while 判斷條件:
    語句
else:
	語句
#如果while循環體中只有一條語句,可以簡寫
while(判斷條件):print("heihei")
##################
for <variable> in <sequence>:
    <statements>
else:
    <statements>
  1. range()
#生成數列
range(5) # 0,1,2,3,4
range(5,9) # 5,6,7,8
range(0,10,3)  # 0,3,6,9 指定步長
range(-10, -100, -30) # -10,-40,-70
#結合range()和len()函數以遍歷一個序列的索引
for i in range(len(list))
#range()創建列表
list(range(5))  # [0,1,2,3,4]
  1. pass語句
    pass是空語句,是爲了保持程序結構的完整性。

  2. 迭代器
    迭代器是一個可以記住遍歷的位置的對象。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退
    迭代器有兩個基本的方法:iter() 和 next(),分別用於創建迭代器對象和訪問迭代器下一個元素。
    字符串,列表或元組對象都可用於創建迭代器。
    把一個類作爲一個迭代器使用需要在類中實現兩個方法__iter__() 與__next__()

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration #循環結束後,觸發 StopIteration 異常,結束迭代。
 
myclass = MyNumbers() #類的實例
myiter = iter(myclass) #類作爲迭代器
 
for x in myiter:
  print(x)
  1. 構造方法__init__()
    在類的內部,使用 def 關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self, 且爲第一個參數,self 代表的是類的實例
    __private_attrs:兩個下劃線開頭,聲明該屬性爲私有,不能在類的外部被使用或直接訪問。
    __private_method:兩個下劃線開頭,聲明該方法爲私有方法,只能在類的內部調用 ,不能在類地外部調用。
    總結:實例不能訪問私有屬性或方法!

  2. 生成器
    在 Python 中,使用了 yield 的函數被稱爲生成器(generator)。生成器是一個返回迭代器的函數,只能用於迭代操作。

import sys
 
def fibonacci(n): # 生成器函數 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一個迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ") #調用f的next()方法
    except StopIteration:
        sys.exit()
  1. 函數
    函數參數傳遞可變/不可變對象的區別:
    傳可變參數,相當於值傳遞,函數內部對參數重新賦值,不會影響參數本身。不可變參數,相當於引用傳遞,指向對象的指針沒有變,所以對參數重新賦值,外部使用這個參數對值也會變。
    return [表達式] 語句用於退出函數,不帶表達式的return語句返回None。
#參數形式分爲:必需參數、關鍵字參數、默認參數、不定長參數
#必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。
printinfo( age=50, name="runoob" )  #關鍵字參數,和順序無關
def printinfo( name, age = 35 ):  #定義函數時默認參數值
def printinfo( arg1, *vartuple ): # *表示多餘對參數以元組形式導入,**表示以字典形式導入
def f(a,b,*,c): #定義函數時,*單獨出現,表示後面對參數必須以關鍵字參數導入
  1. 匿名函數
#使用 lambda 來創建匿名函數,不能訪問自己參數列表之外或全局命名空間裏的參數。
sum = lambda arg1, arg2: arg1 + arg2
  1. 變量作用域
    Python 中只有模塊(module),(class)以及函數(def、lambda)纔會引入新的作用域,也就是說除了以上,在其他代碼塊定義的變量,外部也可以訪問。
    L (Local) 局部作用域
    E (Enclosing) 閉包函數外的函數中
    G (Global) 全局作用域
    B (Built-in) 內建作用域
    查找順序: L –> E –> G –>B
    想要修改外部變量,使用**global(修改全局變量) 和 nonlocal(修改閉包函數外的函數中的變量)**關鍵字
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章