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
があります。
name = "Elon"
exec("%s = %d" % (name, 100))
print(Elon)
出力:
100
exec()
関数内には、文字列値と 10 進値のプレースホルダーとしてそれぞれ使用される%s
と%d
があります。これは、代入演算子 =
を使用して文字列に整数値を割り当てることを意味します。%s
と%d
の両方が引用符 =
で囲まれています。次に、括弧があり、その中に 2つのものがあります。1つ目は作成した変数、つまり値 Elon
を含む name
で、2つ目は整数 100
です。
ここでは、name
変数の代わりに、その変数内の値が置き換えられます。整数 100
が Elon
に割り当てられます。Elon
は変数名になり、それを出力すると、出力として 100
が得られます。
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn関連記事 - Python String
- Python で文字列からコンマを削除する
- Python 文字列の空白を削除する方法
- Python で文字列から数字を抽出する
- Python が文字列を日時 datetime に変換する方法
- Python 2 および 3 で文字列を小文字に変換する方法