【Python】変数が存在するか(定義・宣言済みであるか)を確認する方法

時計 2022.03.17 / 時計

【Python】変数が存在するか(定義・宣言済みであるか)を確認する方法

本記事ではPythonにおける、変数存在するか(定義・宣言済みであるか)どうかを確認する方法について解説していきます。

Pythonでアプリケーションを作成していると、変数そのものが存在しているか(定義・宣言済みであるか)を判定して、処理を分けたい場合があります。

なぜなら存在しない変数を使ってしまうとエラーが発生してしまうからです。

本記事を通して変数の存在確認の方法を確認していきましょう。

また変数において、格納されている値・文字列の有無を確認したいことも多々あります。変数に格納されている値・文字列の有無を確認する方法については以下記事をご参照ください。

Pythonにおける変数

変数とは

変数とはデータ(値や文字列)を格納するための入れ物のようなものです。ほとんどのプログラムで利用されます。

変数には以下に記す2種類の変数が存在します。

  • グローバル変数
  • ローカル変数

グローバル変数はプログラム全体から参照できる変数、ローカル変数は定義された関数内でのみ参照できる変数です。

変数の宣言

PythonではJavaやC言語のように変数を利用する前に宣言する必要があります。
変数の宣言をすることでメモリ上の名前空間に領域が確保されます。

以下サンプルコードはofficeという変数に文字列を格納して、変数の宣言を行っています。

office = "こんにちは!"

このように変数を宣言することを、「変数を定義した」とも言います。

定義していない未定義の変数を参照するとNameErrorが発生します。

>>> print(office)
NameError: name 'office' is not defined

そのためスクリプトではエラーが発生しないように変数が定義済みか確認し、未定義であれば変数を宣言する処理を行う必要があります。

変数が存在するか(定義・宣言されているか)の確認

変数が存在するか(定義・宣言されているか)を確認するには以下2つの方法があります。

  • 例外処理
  • メソッドによる確認

それぞれの方法について次項より解説していきます。

例外処理による変数の定義確認

Pythonにおける例外処理とは、例外(エラー)が発生した場合にプログラムを止めずに処理を継続させる方法です。

すでに説明したように、未定義の変数を参照するとNameErrorが発生します。そこを例外処理でエラーをキャッチすることで、未定義の場合の処理に移すことができます。

以下に例外処理を使ったサンプルコードを記します。

try:
    print(office)
except NameError:
    office = "変数が定義されてませんでした"
    print(office)

メソッドによる変数の定義確認

locals()メソッドまたはglobals()メソッドを利用して、変数が定義済みかどうかを確認することができます。

locals()メソッドはローカル変数のリストを返します。そのため以下のように利用することで、ローカル変数の存在有無を確認できます。

if 'office' in locals():
    print('officeは存在します')
else:
    print('officeは存在しません')

globals()メソッドはグローバル変数のリストを返します。そのため以下のように利用することで、グローバル変数の存在有無を確認できます。

if 'office' in globals():
    print('officeは存在します')
else:
    print('officeは存在しません')

上記のように演算子inとメソッドを組み合わせて、変数の定義済みかの確認を行えます。

注意点として、確認したい変数はシングルコーテーションまたはダブルコーテーションで囲う必要があります。

まとめ

本記事「【Python】変数が存在するか(定義・宣言済みであるか)を確認する方法」はいかがでしたか。

様々なプログラムで応用が利く知識です。ぜひ作成するプログラムに使ってみてください。