第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以從函數(shù)內訪問 exec 提供的全局字典?

是否可以從函數(shù)內訪問 exec 提供的全局字典?

qq_遁去的一_1 2021-08-05 16:10:34
如果函數(shù)是在 exec 代碼之外定義的(因此已經綁定到不同的__globals__),是否可以從函數(shù)內部訪問 exec 提供的全局字典?換句話說,有沒有辦法讓下面的例子工作?def f():    log("Hi")exec('f()', {'f': f, 'log': print})一般來說,是否可以替換__globals__函數(shù)的 ?
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

不確定我的解釋是否完全正確。簡而言之,該示例無法在 Python 3 中運行。


原因是 2 種情況的組合:[1] -exec是 Python 3 中的函數(shù),[2] - 您嘗試執(zhí)行的代碼包含函數(shù)調用。


當您為globals函數(shù)提供可選參數(shù)時,exec它是該函數(shù)的局部作用域。所以下面的例子有效:


exec('log("Hi")', {'log': print})

但是原版沒有。因為在原始示例中,您調用了函數(shù)f. 它有自己的本地范圍。Python 是做什么的?它檢查全局作用域(程序的實際全局作用域)和最內層作用域(函數(shù)的局部作用域f)。兩個范圍都缺少log,你得到NameError.


您可以使用兩個常規(guī)函數(shù)獲得完全相同的行為(相同的錯誤):


def f():

    log("Hi")



def f_():

    log = print

    f()


f_()


查看完整回答
反對 回復 2021-08-05
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號