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

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

如何將局部變量轉換為全局變量,python?

如何將局部變量轉換為全局變量,python?

BIG陽 2021-08-14 19:37:22
我創(chuàng)建了一個函數(shù),該函數(shù)將 python 中的模塊作為您想要的名稱導入。我只想知道,如何在全局范圍內訪問這個新的局部變量。def myimport(modulename, newname):    exec('%s = __import__("%s")'%(newname, modulename))myimport('os', 'pax')現(xiàn)在無法在函數(shù)外部訪問pax變量,我希望它可以訪問。
查看完整描述

2 回答

?
莫回無

TA貢獻1865條經(jīng)驗 獲得超7個贊

這個答案僅用于研究目的,正如 Willem Van Onsem 在評論部分所述 - 由于可能引發(fā)的安全問題,通過 eval / exec 等導入在生產(chǎn)代碼中并不重要。以下代碼適用于 python 2 和 python 3。訣竅是使用 global() 函數(shù)將導入的模塊綁定到全局變量:


def myimport(modulename):

    module = eval('__import__("%s")' % (modulename))

    globals()[modulename] = module


myimport('os')

print(os.path) # now os can get used ...

更新


以下代碼在沒有這個丑陋的 eval 語句的情況下工作:


def myImport(modulename):

    globals()[modulename] = __import__(modulename)


myImport("sys")

print(sys.path)


查看完整回答
反對 回復 2021-08-14
?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

您可以將 globals 字典作為第二個參數(shù)傳遞給exec. 這將改變 exec 的代碼執(zhí)行范圍。


def very_bad_idea(name, value):

    exec(f'{name}={repr(value)}', globals())


very_bad_idea('spam', 'eggs')

print(spam)  # prints 'eggs'

但請不要這樣做。嘗試找到一些不涉及 exec 的方法。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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