Python動態地聲明變量賦值


通過exec()、globals()和locals()

# 通過exec()
for i in range(1, 4):
    # 第一次循環 i=1 時,會執行字符串中的python語句 ex1 = "exec1",以此類推
    exec(f'ex{i} = "exec{i}"')

# 通過globals()和locals()
def test():
    # globals()
    for i in range(1, 4):
        # 第一次循環 i=1 時,執行 globals()['gb1'] = 'global1', globals()是一個dict
        globals()[f'gb{i}'] = f'global{i}'

    # locals()
    for i in range(1, 4):
        locals()[f'lc{i}'] = f'local{i}'

    # 嘗試打印locals的變量
    try:
        print(lc1, lc2, lc3)    # 會報錯
    except Exception as e:
        print(e)
        print(locals()['lc1'], locals()['lc2'], locals()['lc3'])    # 通過鍵值對

if __name__ == '__main__':
    # 執行
    test()
    print('---------------------')
    # 打印函數定義的全局變量
    print(gb1, gb2, gb3)
    print('---------------------')
    # 打印通過exec()定義的變量
    print(ex1, ex2, ex3)

輸出結果:

name 'lc1' is not defined
local1 local2 local3
---------------------
global1 global2 global3
---------------------
exec1 exec2 exec3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM