python易錯題之lambda 以及 for循環中內嵌函數


li = []
for x in range(10):
    print(x)     //在函數沒有執行前(li[0]()),for 循環中x已經執行完,x會一直為 9 
    def fun():
        print(x) //一直為 9  ,fun函數在for循環中是沒有被調用的
        return x
    li.append(fun)
print(li[0]())  //9

 

 

li = [lambda :x for x in range(10)]
print(type(li))      #<class 'list'>
print(type(li[0]))   #<class 'function'>
for i in li:
    print(i())   #結果是一直為 9

解析:
li = [lambda :x for x in range(10)]
變成函數:
li = []
for x in range(10):
  def fun():  #lambda中沒有定義參數
    return x
  li.append(fun) #當函數還沒有運行的時候,x已經為9了

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM