日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python 在局部變量域中執行代碼

瀏覽:30日期:2022-07-14 16:04:09

問題

你想在使用范圍內執行某個代碼片段,并且希望在執行后所有的結果都不可見。

解決方案

為了理解這個問題,先試試一個簡單場景。首先,在全局命名空間內執行一個代碼片段:

>>> a = 13>>> exec(’b = a + 1’)>>> print(b)14>>>

然后,再在一個函數中執行同樣的代碼:

>>> def test():... a = 13... exec(’b = a + 1’)... print(b)...>>> test()Traceback (most recent call last): File '<stdin>', line 1, in <module> File '<stdin>', line 4, in testNameError: global name ’b’ is not defined>>>

可以看出,最后拋出了一個NameError異常,就跟在 exec() 語句從沒執行過一樣。 要是你想在后面的計算中使用到 exec() 執行結果的話就會有問題了。

為了修正這樣的錯誤,你需要在調用 exec() 之前使用 locals() 函數來得到一個局部變量字典。 之后你就能從局部字典中獲取修改過后的變量值了。例如:

>>> def test():... a = 13... loc = locals()... exec(’b = a + 1’)... b = loc[’b’]... print(b)...>>> test()14>>>

討論

實際上對于 exec() 的正確使用是比較難的。大多數情況下當你要考慮使用 exec() 的時候, 還有另外更好的解決方案(比如裝飾器、閉包、元類等等)。

然而,如果你仍然要使用 exec() ,本節列出了一些如何正確使用它的方法。 默認情況下,exec() 會在調用者局部和全局范圍內執行代碼。然而,在函數里面, 傳遞給 exec() 的局部范圍是拷貝實際局部變量組成的一個字典。 因此,如果 exec() 如果執行了修改操作,這種修改后的結果對實際局部變量值是沒有影響的。 下面是另外一個演示它的例子:

>>> def test1():... x = 0... exec(’x += 1’)... print(x)...>>> test1()0>>>

上面代碼里,當你調用 locals() 獲取局部變量時,你獲得的是傳遞給 exec() 的局部變量的一個拷貝。 通過在代碼執行后審查這個字典的值,那就能獲取修改后的值了。下面是一個演示例子:

>>> def test2():... x = 0... loc = locals()... print(’before:’, loc)... exec(’x += 1’)... print(’after:’, loc)... print(’x =’, x)...>>> test2()before: {’x’: 0}after: {’loc’: {...}, ’x’: 1}x = 0>>>

仔細觀察最后一步的輸出,除非你將 loc 中被修改后的值手動賦值給x,否則x變量值是不會變的。

在使用 locals() 的時候,你需要注意操作順序。每次它被調用的時候, locals() 會獲取局部變量值中的值并覆蓋字典中相應的變量。 請注意觀察下下面這個試驗的輸出結果:

>>> def test3():... x = 0... loc = locals()... print(loc)... exec(’x += 1’)... print(loc)... locals()... print(loc)...>>> test3(){’x’: 0}{’loc’: {...}, ’x’: 1}{’loc’: {...}, ’x’: 0}>>>

>>> def test3():... x = 0... loc = locals()... print(loc)... exec(’x += 1’)... print(loc)... locals()... print(loc)...>>> test3(){’x’: 0}{’loc’: {...}, ’x’: 1}{’loc’: {...}, ’x’: 0}>>>

注意最后一次調用 locals() 的時候x的值是如何被覆蓋掉的。

作為 locals() 的一個替代方案,你可以使用你自己的字典,并將它傳遞給 exec() 。例如:

>>> def test4():... a = 13... loc = { ’a’ : a }... glb = { }... exec(’b = a + 1’, glb, loc)... b = loc[’b’]... print(b)...>>> test4()14>>>

大部分情況下,這種方式是使用 exec() 的最佳實踐。 你只需要保證全局和局部字典在后面代碼訪問時已經被初始化。

還有一點,在使用 exec() 之前,你可能需要問下自己是否有其他更好的替代方案。 大多數情況下當你要考慮使用 exec() 的時候, 還有另外更好的解決方案,比如裝飾器、閉包、元類,或其他一些元編程特性。

以上就是Python 在局部變量域中執行代碼的詳細內容,更多關于Python 局部變量域的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
色婷婷成人网| 99热精品久久| 久热re这里精品视频在线6| 欧美国产91| 99国产精品久久久久久久成人热| 黄色在线网站噜噜噜| 国产欧洲在线| 日韩高清中文字幕一区二区| 视频小说一区二区| 精品一区免费| 性色av一区二区怡红| 亚洲麻豆一区| 亚洲精品第一| 国产精选久久| 91综合视频| 久久中文视频| 国产精品日韩欧美一区| 视频一区中文字幕精品 | 91精品国产乱码久久久久久久| 色爱av综合网| 亚洲一区日本| 国产亚洲久久| 乱一区二区av| 99精品小视频| 亚洲精品国产精品粉嫩| 日韩精品社区| 卡一精品卡二卡三网站乱码| 亚洲伦乱视频| 在线免费观看亚洲| 国产精品网址| 久久精品一区二区不卡| 一区二区三区四区日韩| 国产乱码精品| 欧美~级网站不卡| 亚洲日本三级| 视频在线不卡免费观看| 午夜日韩在线| 国产精品自拍区| 99久久亚洲精品蜜臀| 亚洲精品福利| 国产精品不卡| 中文字幕日韩亚洲| 精品久久一区| 最新国产拍偷乱拍精品| 日韩av中文在线观看| 天堂√中文最新版在线| 久久亚洲风情| 欧美激情另类| 中文字幕日本一区| 国产96在线亚洲| 蜜臀久久久99精品久久久久久| 国产精品传媒麻豆hd| 欧美日韩在线网站| 欧美日韩一区二区国产| 亚洲福利免费| 国产视频网站一区二区三区| 欧美日韩中文一区二区| 欧美一区在线观看视频| 99久精品视频在线观看视频| 国产精品亚洲一区二区在线观看| 在线成人直播| 狂野欧美性猛交xxxx| 国产精品免费看| 日韩av片子| 青草综合视频| 亚洲精品888| 国产一区二区三区网| 亚洲精品亚洲人成在线观看| 色爱av综合网| 国产精品18| 国产午夜精品一区二区三区欧美 | 国产日韩视频| 欧美日韩国产欧| 天堂а√在线最新版中文在线| 日本v片在线高清不卡在线观看| 久久久国产亚洲精品| 欧美经典一区| 香蕉久久一区| 免费不卡中文字幕在线| 精品三级国产| 日本不卡在线视频| 好吊日精品视频| 9999国产精品| 欧美影院视频| 西西人体一区二区| 欧美亚洲国产激情| 日韩av二区| 欧美91在线| 国产精品午夜av| 啪啪亚洲精品| 日本一区中文字幕| 男女男精品网站| 999在线观看精品免费不卡网站| 高清在线一区| 国产精品久久亚洲不卡| 亚洲精品伊人| 蜜桃视频在线观看一区| 黄色免费成人| 91精品国产成人观看| 中文av在线全新| 国产一区丝袜| 久久久久九九精品影院| 欧美日韩在线精品一区二区三区激情综合| 中文精品视频| 国产一区二区精品| 国产精品日韩久久久| 欧美另类综合| 99riav1国产精品视频| 九九综合在线| 亚洲电影在线一区二区三区| 天堂日韩电影| 欧美日韩一区二区三区视频播放| 亚洲成人va| 麻豆国产在线| av中文字幕在线观看第一页| 国产精品毛片久久| 91欧美在线| 欧美片第1页| 日韩精品麻豆| 香蕉国产精品| 国产模特精品视频久久久久| 免费精品视频在线| 亚洲专区视频| 色婷婷成人网| 久久国产精品色av免费看| 国产欧美日韩精品一区二区免费 | 国产成人精品免费视| 日产精品一区二区| 日韩三区在线| 91成人精品| 香蕉久久国产| 色婷婷成人网| 欧美一级网址| 麻豆久久久久久久| 国产精品精品国产一区二区| 久久黄色影院| 亚洲综合欧美| 97久久亚洲| 免费在线日韩av| 天堂8中文在线最新版在线| 久久精品123| 午夜在线一区| 国产免费av国片精品草莓男男| 久久精品一本| 日韩av首页| 天堂av在线一区| 日韩福利视频网| 精品一区二区三区免费看| 日韩大片免费观看| 国产视频欧美| 国产精品一区二区美女视频免费看 | 亚洲无线观看| 青青草91视频| 日本不卡在线视频| 在线精品观看| 亚洲国产欧美日本视频| 日韩精品五月天| 91伊人久久| 精品九九久久| 私拍精品福利视频在线一区| 亚洲免费观看| 国产欧美88| 亚洲天堂一区二区| 亚洲婷婷丁香| 精品国产a一区二区三区v免费| 日韩欧美精品| 久久一区二区三区喷水| 亚洲2区在线| 国产不卡精品| 国产日韩免费| av资源中文在线| 五月婷婷亚洲| 欧美日一区二区三区在线观看国产免 | 久久在线免费| 亚洲三级网址| 国产自产自拍视频在线观看| 久久亚洲风情| 久久这里只有精品一区二区| 欧美在线综合| 国产一区导航| 国产精品一区二区三区av| 三级精品视频| 欧美一级二级三级视频| 视频福利一区| 国产日韩一区| 亚洲午夜91| 国产精品中文字幕制服诱惑| 99久久婷婷这里只有精品| 日韩福利视频网| 99久久激情| 国产精品一区二区美女视频免费看| 91精品啪在线观看国产18| 亚洲91网站| 伊人久久大香线蕉av不卡| 在线精品福利| 欧洲精品一区二区三区| 欧美在线91| 国产精品嫩草99av在线| 日本一二区不卡| 日韩高清不卡一区二区|