HOWTO · Python
在 Python 中將字串轉換為變數名
在本文中,我們將討論在 Python 中將字串值轉換為變數名的各種方法。
本頁內容
在 Python 中,可以通過多種方法將字串值轉換為變數的名稱。在本文中,我們將討論實現此目標的各種方法。
有些人可能想這樣做,以便在執行 Python 程式時動態定義變數名。在開發可用於生產環境的軟體時,建議不要使用以下所示的方式將字串轉換為變數名,因為這可能會引起一些問題。是的,可以實現這一點,但是在執行此操作時請務必謹慎。
在 Python 中使用 globals() 和 locals() 將字串轉換為變數名
globals()
Python 中的 globals() 函式返回當前全域性符號表的字典。全域性符號表儲存與程式的全域性範圍有關的所有資訊,可以使用 globals() 函式進行訪問。
user_input = input("Enter string for variable name: \n")
globals()[user_input] = 50
print(apple)
print(type(apple))
輸出:
我們在這裡要做的第一件事是使用 input() 函式從使用者那裡獲取輸入,並在其中傳遞一個字串 Enter a string for a variable name:。然後,無論使用者輸入什麼值,該值都將儲存在變數 user_input 中。在這裡,我們希望使用者輸入 apple 作為字串值,然後將其儲存在 user_input 中。如果使用者輸入的內容不是 apple,則程式將通過 NameError: name 'variable' is not defined 的錯誤提示。這是因為我們也在列印 apple 的值,然後稍後在我們的程式碼中檢查它的型別。
如果使用者輸入了正確的值,我們可以使用 globals() 修改全域性字典,以修改全域性字典,並將任何值分配給變數 apple。在這裡,我們為變數 apple 分配了 50。
locals()
Python 中的 locals() 函式返回當前本地符號表的字典。可以通過 locals() 函式訪問本地符號表。locals() 函式的工作方式幾乎與 globals() 函式相同。唯一的區別是 locals() 可以訪問本地符號表,而 globals() 可以訪問全域性符號表並返回字典。
user_input = input("Enter string for variable name: \n")
locals()[user_input] = 50
print(apple)
print(type(apple))
輸出:
此程式碼也與 globals() 相同。唯一的區別是我們在這裡使用了 locals() 函式。
在 Python 中使用 exec() 將字串轉換為變數名
完成此操作的另一種方法是在 Python 中使用 exec() 函式。exec() 函式用於動態執行 Python 程式。我們有一個變數名稱,其中儲存了一個字串值 Elon。
name = "Elon"
exec("%s = %d" % (name, 100))
print(Elon)
輸出:
100
在 exec() 函式內部,我們有%s 和%d 分別用作字串值和十進位制值的佔位符。這意味著我們將在賦值運算子 = 的幫助下為字串賦一個整數值。%s 和%d 都包含在引號""內。然後我們有一個括號,裡面有 2 個東西,第一個是我們建立的變數,即 name,其中包含值 Elon,第二個是整數 100。
在這裡,將代替該變數中的值代替 name 變數。整數 100 將分配給 Elon。Elon 成為變數名,如果你列印它,將得到 100 作為輸出。