python closure閉包 lambda表示式

憂鬱,灑脫發表於2019-05-23
  • 在函式中改變全域性變數的值,使用什麼關鍵字
    • global
  • 在巢狀的函式中,如果希望在內部函式修改外部函式的區域性變數,應使用什麼關鍵字
    • nonlocal
  • 請問為什麼程式碼A沒有報錯,但是程式碼B卻報錯了?贏如何修改?
    • 因為程式碼B中,local variable 'var' referenced before assignment,說的是變數var沒有被定義就拿來使用,所以報錯
    • outside()函式中有一個var,inside()函式中也有一個var,python為了保護變數的作用域,故將outside()的var變數遮蔽起來,因此此時是無法訪問到外層的var變數的
  • 答案:github.com/LiuJiYangYa…

lambda表示式

  • 匿名函式

    • Python寫一些執行指令碼時,使用匿名函式就可以省下定義函式過程,比如說我們只是需要寫個簡單的指令碼來管理伺服器時間,我們就不需要專門定義一個函式然後再寫呼叫,使用匿名函式就可以使得程式碼更加精簡。
    • 對於一些比較抽象並且整個程式執行下來只需要呼叫一兩次的函式,有時候給函式起個名字也是比較頭疼的問題,使用匿名函式就不需要考慮命名的問題了
    • 簡化程式碼的可讀性,由於普通的屌絲函式閱讀經常要跳到開頭def定義部分,使用匿名函式函式可以省去這樣的步驟。
  • lambda表示式的作用

    • Python寫一些執行指令碼時,使用lambda就可以省下定義函式的過程,比如說我們只是需要寫個簡單的指令碼來管理伺服器時間,我們就不需要專門定義一個函式然後再寫呼叫,使用lambda就可以使得程式碼更加精簡。
    • 對於一些比較抽象並且整個程式執行下來只需要呼叫一兩次的函式,有時候給函式起個名字也是比較頭痛的問題,使用lambda就不需要考慮命名的問題了
    • 簡化程式碼的可讀性,由於普通的屌絲函式閱讀經常要跳到開頭def定義部分,使用lambda函式可以省去這樣的步驟
  • 兩個牛逼的BIF

    • filter()用法:filter(function or None, iterable),有兩個引數,第二個引數為可迭代的資料,第一個引數可以為None或者函式,當為None時,將iterable中為真的資料挑選出來,當為function時,將iterable中滿足function的結果為真的資料挑選出來。
    • map()用法:map(func, *iterables),將可迭代序列的每一個資料作為函式的引數進行運算加工,直到可迭代序列的每一個元素都加工完畢,返回所有加工後的元素構成的新序列。
  • 答案:github.com/LiuJiYangYa…

相關文章