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

您的位置:首頁技術(shù)文章
文章詳情頁

Python 在局部變量域中執(zhí)行代碼

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

問題

你想在使用范圍內(nèi)執(zhí)行某個代碼片段,并且希望在執(zhí)行后所有的結(jié)果都不可見。

解決方案

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

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

然后,再在一個函數(shù)中執(zhí)行同樣的代碼:

>>> 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() 語句從沒執(zhí)行過一樣。 要是你想在后面的計算中使用到 exec() 執(zhí)行結(jié)果的話就會有問題了。

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

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

討論

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

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

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

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

>>> 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() 的時候,你需要注意操作順序。每次它被調(diào)用的時候, locals() 會獲取局部變量值中的值并覆蓋字典中相應(yīng)的變量。 請注意觀察下下面這個試驗的輸出結(jié)果:

>>> 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}>>>

注意最后一次調(diào)用 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() 的最佳實踐。 你只需要保證全局和局部字典在后面代碼訪問時已經(jīng)被初始化。

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

以上就是Python 在局部變量域中執(zhí)行代碼的詳細內(nèi)容,更多關(guān)于Python 局部變量域的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美午夜精品一区二区三区电影| 蜜桃久久久久| 激情国产在线| 欧美激情视频一区二区三区在线播放| 午夜性色一区二区三区免费视频| 爽好久久久欧美精品| 亚洲视频www| 首页国产欧美久久| 性欧美精品高清| 久久成人一区| 快she精品国产999| 亚洲精品伊人| 国产欧美激情| 红杏一区二区三区| 久久亚洲国产| 亚洲一级二级| 中文国产一区| 亚洲一区二区av| 久久国产人妖系列| 精品一区二区三区在线观看视频| 成人精品国产亚洲| 日韩中文影院| 欧美另类专区| 色综合视频一区二区三区日韩 | 91精品国产成人观看| 91精品国产91久久久久久黑人| 婷婷激情图片久久| 亚洲aa在线| 国产精品调教| 欧美精品第一区| 日韩亚洲一区在线| 国产日韩专区| 国产精品日韩精品中文字幕| 欧美aa一级| 久久福利影视| 国产精品调教| 亚洲高清激情| 日韩国产成人精品| 91青青国产在线观看精品| 五月天久久网站| 日韩美女国产精品| 国产自产自拍视频在线观看| 久久不射中文字幕| 国产精品a级| 日本а中文在线天堂| 国产精品毛片| 欧美黑人做爰爽爽爽| 亚洲韩日在线| 国产欧美亚洲一区| 亚洲国产专区| 国产精品午夜一区二区三区| 国产精品av一区二区| 欧美日本久久| 韩国精品主播一区二区在线观看| 奶水喷射视频一区| 国产一区国产二区国产三区 | 日韩一区精品字幕| 麻豆一区二区三| 99在线|亚洲一区二区| 国产乱码精品一区二区三区四区 | 1000部精品久久久久久久久| 欧美午夜网站| 久久激情中文| 国产剧情在线观看一区| 欧美1级日本1级| 欧美激情日韩| 亚洲一区有码| 99热精品久久| 麻豆国产一区| 蜜桃视频在线观看一区| 国产高清不卡| 国产欧美日本| 日韩中文字幕麻豆| 欧美aa一级| 欧美a在线观看| 亚洲精选av| 视频小说一区二区| 国产欧美69| 鲁大师影院一区二区三区| 国语对白精品一区二区| 日韩激情综合| 成人av动漫在线观看| 麻豆精品新av中文字幕| 综合欧美精品| 1024精品一区二区三区| 日韩av专区| 久久精品97| 久久国产精品亚洲77777| 日韩欧美一区二区三区在线视频 | 综合在线一区| 亚洲精品1区| 四虎4545www国产精品| 精品视频在线观看网站| 亚洲免费专区| 狠狠干成人综合网| 欧美日韩精品免费观看视欧美高清免费大片| 国产欧美自拍一区| 视频一区中文字幕精品| 亚洲大全视频| 欧美三级网址| 久久久久久夜| 国产精品xxx| 亚洲精品高潮| 亚洲人成毛片在线播放女女| 女同性一区二区三区人了人一 | 日本不卡一区二区三区| 日韩专区一卡二卡| 黄色国产精品| 久久精品123| 在线观看精品| 蜜臀国产一区| 91一区二区三区四区| 美女视频黄 久久| 国产精品主播| 欧美日韩夜夜| 国产精品一区二区中文字幕| 青青草伊人久久| 日韩综合一区二区| 亚洲影院天堂中文av色| 日韩中文字幕av电影| 亚洲欧美激情诱惑| 美女久久一区| 亚洲综合精品| 亚洲精品看片| 日韩国产91| 国产欧美日韩精品一区二区三区| 欧美精品影院| 国产精品永久| 国产欧美日韩在线一区二区| 国产精品久一| 久久永久免费| 中文字幕高清在线播放| 日韩网站中文字幕| 国产一区二区三区自拍| 在线亚洲一区| 天堂va在线高清一区| 国产视频一区二| 久久久久黄色| 日本高清不卡一区二区三区视频| 日韩国产在线| 99视频精品视频高清免费| 国产一区二区三区自拍| 亚洲深夜影院| 亚洲精品高潮| 精品一区二区三区四区五区| 伊人久久在线| 国产视频一区三区| 亚洲精品一二| 国产精品成人国产| 中国字幕a在线看韩国电影| 久久精品动漫| 中文一区一区三区免费在线观 | 国产精品多人| 热三久草你在线| 亚洲精品网址| 日韩精品视频在线看| 青青草伊人久久| 97精品在线| 伊人久久婷婷| 日韩精品视频在线看| 国产成人免费| 欧美特黄一区| 国产图片一区| 在线天堂中文资源最新版| 女人天堂亚洲aⅴ在线观看| 婷婷亚洲成人| 激情久久99| 一本一本久久| 久久99偷拍| 欧美午夜不卡| 欧美日韩在线精品一区二区三区激情综合 | 亚洲精品无播放器在线播放| 国产日产一区| 国产成人免费| 国产精品美女久久久| 国产精品久久久网站| 日韩精品水蜜桃| 日本色综合中文字幕| 日韩专区精品| 日本不卡的三区四区五区| 亚洲伊人av| 亚洲精品在线a| 欧美激情另类| 亚洲精品麻豆| 97se综合| 亚洲精品伦理| 日韩中文在线播放| 日韩三级精品| 人人草在线视频| 欧美亚洲色图校园春色| jiujiure精品视频播放| 美女久久99| 中文字幕中文字幕精品| 岛国av在线网站| 日韩激情精品| 亚洲激情中文| 久久青青视频| 国产精品主播| 亚洲天堂免费| 欧美高清不卡|