前往
大廳
主題

從零開始的python ep.10 函式的補充章節

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

在ep.9的結尾黑子提到
因為全域變數濫用的問題,python直接禁止了函式中的功能,讓函式只能讀全域變數不能亂改,那如果真的還是很想在函式中隊全域變數進行修改要怎麼做?
我們會使用到 global 這個指令

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


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


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


然後進階版 將lambda跟 sort中的函式
lambda 後面的 i 就直接是其中一組的學生資料,於是用學生中的座號作為排序的標的
關於sort key的使用方法,同樣可以參考ep.6

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


送禮物贊助創作者 !
0
留言

創作回應

更多創作