Python で文字列を変数名に変換する

Sahil Bhosale 2023年1月30日
  1. Python で globals()locals() を使用して文字列を変数名に変換する
  2. Python で exec() を使用して文字列を変数名に変換する
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))

出力:

globals()関数を使用して文字列を変数名に変換する

ここで最初に行うことは、input() 関数を使用してユーザーから入力を受け取り、その中に文字列 Enter a string for a variable name:を渡すことです。次に、ユーザーが入力する値が何であれ、その値は変数 user_input 内に格納されます。ここでは、ユーザーが文字列値として apple を入力し、それが user_input 内に格納されることを期待しています。ユーザーが apple 以外の値を入力すると、NameError: name 'variable' is not defined としてプログラムはエラーを起こします。これは、apple の値も出力し、コードの後半でそのタイプを確認しているためです。

ユーザーが正しい値を入力した場合、globals() を使用してグローバルディクショナリを変更し、グローバルディクショナリを変更して、変数 apple に任意の値を割り当てることができます。ここでは、変数 apple50 を割り当てました。

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()関数を使用して文字列を変数名に変換する

このコードも 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 変数の代わりに、その変数内の値が置き換えられます。整数 100Elon に割り当てられます。Elon は変数名になり、それを出力すると、出力として 100 が得られます。

著者: Sahil Bhosale
Sahil Bhosale avatar Sahil Bhosale avatar

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 Variable