ETH官方钱包

前往
大廳
主題

從零開(kāi)始的python ep.10 函式的補(bǔ)充章節(jié)

黑子 | 2021-06-12 10:00:02 | 巴幣 1000 | 人氣 251

在ep.9的結(jié)尾黑子提到
因?yàn)槿蜃償?shù)濫用的問(wèn)題,python直接禁止了函式中的功能,讓函式只能讀全域變數(shù)不能亂改,那如果真的還是很想在函式中隊(duì)全域變數(shù)進(jìn)行修改要怎麼做?
我們會(huì)使用到 global 這個(gè)指令

可以看到a明顯在 out() 函式執(zhí)行之後,直接被改掉了
nonlocal 這個(gè)指令也可以達(dá)到相同效果(在只有單層指令的情況下,正常情況我們也不會(huì)在函式裡面在塞一個(gè)函式在裡面)


然後接著介紹一個(gè)指令 yield
用下面三個(gè)函式來(lái)進(jìn)行說(shuō)明
首先 normal(5)
只會(huì)跳出一次,因?yàn)閞eturn在for迴圈裡面,跑一次就丟出一個(gè)值1
然後 pro(5)
return在for迴圈外面,所以印了五次,才return一個(gè)值5
然而list(pro(5)) 我們要把pro(5)放到容器中,直接跳出錯(cuò)誤
gen(5),雖然印出來(lái)看起來(lái)怪怪的
但用list(gen(5)),就可以順利的把1~5放到容器list之中
也可以看下面的例子
總結(jié)來(lái)說(shuō),return在for迴圈之中,還是只會(huì)傳出一次
(我們?cè)趀p.9知道說(shuō)return可以用tuple形式呈現(xiàn)多個(gè)值,但還是只有回傳一次)
所以利用yield 讓我們可以得到多次的回傳,並且可以將回傳值放到容器裡面


接著介紹函式 lambda,類(lèi)似生成式的使用方式
如果覺(jué)得這邊教得太少,也可以參考這個(gè) (python 3 零基礎(chǔ)輕鬆學(xué) Lambda函式)
lambda 是簡(jiǎn)易形式的函式,用完即丟,不著痕跡,適合用來(lái)處理幾行程式碼就能完成的函式


然後進(jìn)階版 將lambda跟 sort中的函式
lambda 後面的 i 就直接是其中一組的學(xué)生資料,於是用學(xué)生中的座號(hào)作為排序的標(biāo)的
關(guān)於sort key的使用方法,同樣可以參考ep.6

延伸閱讀 遞迴函式(讓函式可以呼叫自己,注意起始值跟終止值)
這個(gè)有空再來(lái)補(bǔ)囉


送禮物贊助創(chuàng)作者 !
0
留言

創(chuàng)作回應(yīng)

相關(guān)創(chuàng)作

更多創(chuàng)作