Python基礎 day10 生成器

2021-10-07 12:38:29 字數 3516 閱讀 3382

示例一:

a=[x for x in range(30)]                  #這行**就是列表生成器,執行順序就是先執行後面的for迴圈,然後執行前面的x

print(a)

執行結果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

process finished with exit code 0

示例二:

a=[x*2 for x in range(30)]

print(a)

執行結果:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58]

process finished with exit code 0

示例三:

def f(n):

return n*n

a=[f(x) for x in range(30)]

print(a)

print(type(a))

執行結果:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841]

process finished with exit code 0

變數賦值的另外一種形式:

t=(123,'a')

a,b=t

print(a)

print(b)

執行結果:

123

aprocess finished with exit code 0

a=(x*2 for x in range(30))

print(a)

print(next(a))

print(next(a))

print(next(a))

print(next(a))

執行結果:

at 0x00000236b7d59200>              #從這裡可以看出來,我們的內容是生成器02

46process finished with exit code 0

a=10

a=5b=a

def foo():

yield 1

print(foo)

print(foo())

執行結果:

#這裡只的是foo本身,foo本身是仍然是乙個函式

#但是使用foo()表示執行了這個函式,這時候就生成乙個生成器物件了

process finished with exit code 0

def foo():

print("ok")

yield 1

rst=foo()

print(rst)                     #這裡並沒有執行,也就是說明了生成器物件不會執行函式內部的程式

print("---")

next(rst)                      #這裡使用next函式的時候,才會將生成器中的內容列印出來

執行結果:

---

okprocess finished with exit code 0

程式執行順序:

執行結果:

ok

1                  #這裡的1是 yield 1 返回的結果no5

process finished with exit code 0

def fibo(max):

n,before,after = 0,0,1

while n執行結果:

11235813

2134

process finished with exit code 0

def fibo(max):

n,before,after = 0,0,1

while n執行結果:

0112358

13process finished with exit code 0

程式執行順序:

rst1=b.send(none)        #相當於next(b)  第一次send如果沒有next,就只能傳乙個send(none)

print(rst1)              #1

rst2=b.send('yuyang')    #yuyang  這裡因為有send所以會執行生成器內部的程式,程式中有print變數x所以會列印出來yuyang

print(rst2)              #2

執行結果:

1

yuyang

2process finished with exit code 0

執行截圖:

呼叫物件的iter()方法,返回乙個迭代器物件

while迴圈,不斷迴圈next

錯誤捕捉,異常處理

python基礎刻意練習 day10

python基礎刻意練習 day10 檔案系統 我們所知道常用的作業系統有windows,mac os,linx,unix等,這些作業系統底層對於檔案系統的訪問工作原理是不一樣的,因此可能就要針對不同的系統來考慮使用哪些檔案系統模組。這樣是很麻煩的,因為這就意味著當程式的執行環境一改變,就要相應的去...

Python基礎刻意訓練 DAY10

學習內容 主要內容 類與物件 前言 類的存在使得整個程式得到了良好的封裝,同時,使得程式可以直接進行呼叫,而不是重複去書寫以前的 建立類的基本格式 class name 屬性 屬性名 相關數值 方法 def 函式名 變數 函式體 示例 class lsgo 類名 屬性 number 259 loca...

Python基礎知識(day10)

函式小高階 lambda 表示式 用於表示簡單的函式,左側為引數,右側為函式體 lambda 解決簡單函式的情況 def func1 a1,a2 return a1 a2 lambda 簡化,左側為引數,右側為函式體 func2 lambda a1,a2 a1 a2 v func2 1,2 prin...