日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python坑:bool是int的子类、列表循环中的变量泄露、lambda在闭包中会保存局部变量、重用全局变量

發(fā)布時間:2025/3/20 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python坑:bool是int的子类、列表循环中的变量泄露、lambda在闭包中会保存局部变量、重用全局变量 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

bool是int的子類

a = True print isinstance(a, int) print True == 1 print False == 0

運行結(jié)果:

True True True

列表循環(huán)中的變量泄露

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' # 情況一 i = 1 li = [i for i in range(5)] print i # 情況二 i = 1 for i in range(5):pass print i

運行結(jié)果:

4 4

列表推導(dǎo)式和for循環(huán)對于它們的迭代變量沒有私有的作用域,為了避免泄漏變量的問題,不要在循環(huán)中使用外部同名變量。

lambda在閉包中會保存局部變量

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' alist = [lambda : i for i in range(5)] print alist for j in alist:print j()

運行結(jié)果:

4 4 4 4 4

原因是當(dāng)賦值給alist的時候,lambda表達(dá)式就執(zhí)行了i循環(huán),直到 i =4,i會保留。

問題的本質(zhì)在與python中的屬性查找規(guī)則,LEGB(local,enclousing,global,bulitin),在上面的例子中,i就是在閉包作用域(enclousing),而Python的閉包是遲綁定,這意味著閉包中用到的變量的值,是在內(nèi)部函數(shù)被調(diào)用時查詢得到的。

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' # 解決方法1:換成生成器 alist = (lambda : i for i in range(5)) for j in alist:print j()# 解決方法2:變閉包作用域為局部作用域 alist = [lambda i=i: i for i in range(5)] for j in alist:print j()

運行結(jié)果:

0 1 2 3 4

重用全局變量

x=10 def demo():print xx=20print x demo()

運行結(jié)果:

UnboundLocalError: local variable 'x' referenced before assignment

原因是某個作用域只要有該變量的賦值語句,該變量就是局部變量。在賦值之前局部變量不存在,所以報錯。

解決方法:

x=10 def demo():global x # 使用前加全局變量,后果是x變成了全局變量print xx=20print x demo()

運行結(jié)果:

10 20 與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Python坑:bool是int的子类、列表循环中的变量泄露、lambda在闭包中会保存局部变量、重用全局变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。