sec01 - 変数の命名規則(2)

このレクチャーでは、変数として使用できないキーワードや、使用しない方が良い名前について学習します。

変数として使用できないキーワード

次のキーワードは、変数名として使うことができません。

  • def
  • class
  • is
  • None
  • True
  • False
  • and
  • not
  • in
  • or
  • global
  • nonlocal
  • lambda
  • from
  • import
  • as
  • return
  • pass
  • with
  • assert
  • async
  • await
  • yield
  • del
  • for
  • while
  • if
  • elif
  • else
  • try
  • except
  • finally
  • break
  • continue
  • raise

これらのキーワードは、Pythonにとって特別な意味を持っているため、変数として使用することができません。例えば、"def"は関数を定義するときのキーワードですし、"for"は処理を繰り返す時に使用します。上記のキーワードをここですべて覚える必要はありません。講義を進めていくうえで自然と覚えていきますので、ここでは"キーワードとして指定されている単語は使用することができない"と覚えておきましょう。

尚、上記キーワードと1文字でも違っていれば使用することができます。(大文字・小文字の違いでもOK。)

  • _global (先頭にアンダーバーを追加)
  • global_address (単語の連結)
  • Global (先頭の文字が大文字)
  • sync (← 先頭のaがない)

上記のように単語を繋げたり、先頭にアンダーバーを加えたりすることで、Pythonはキーワードと区別するので使用できるようになります。

変数として使用しない方が良い名前(組み込み関数)

変数として使用しない方がよい名前として、組み込み関数の名前があります。

組み込み関数とは、Pythonであらかじめ用意してある関数のことです。例えば、今まで使ってきた"print"も組み込み関数の1つです。
(関数については専用のレクチャーで詳しく解説しますので、ここでは"組み込み関数の名前は使わないようにする"と覚えておいてください。)

組み込み関数のリストは、下記サイトで確認することができます。

https://docs.python.org/ja/3.13/library/functions.html

  • abs
  • aiter
  • all
  • anext
  • any
  • ascii
  • bin
  • bool
  • breakpoint
  • bytearray
  • bytes
  • callable
  • chr
  • classmethod
  • compile
  • complex
  • delattr
  • dict
  • dir
  • divmod
  • enumerate
  • eval
  • exec
  • filter
  • float
  • format
  • frozenset
  • getattr
  • globals
  • hasattr
  • hash
  • help
  • hex
  • id
  • input
  • int
  • isinstance
  • issubclass
  • iter
  • len
  • list
  • locals
  • map
  • max
  • memoryview
  • min
  • next
  • object
  • oct
  • open
  • ord
  • pow
  • print
  • property
  • range
  • repr
  • reversed
  • round
  • set
  • setattr
  • slice
  • sorted
  • staticmethod
  • str
  • sum
  • super
  • tuple
  • type
  • vars
  • zip
  • __import__

上記の組み込み関数名に関しては、変数として使用しても実行時にエラーは出ませんが、本来の関数の役割を失ってしまいます

例えば、"print"に"10"を代入し、その後で"print('Hello')"を行ってみます。
(筆者の環境では、前回のレクチャーで使用した "sec01_learning02_variables.py" を使用します。)

print = 10
print('Hello')

それでは、上記コードを実行(F5)します。

そうすると、下図のようなエラーが表示されます。

エラーの内容は"'int' object is not callable('int'オブジェクトは呼び出し可能ではありません)"とあります。'int'とは'integer'の略で、10のような整数のことを指しています。

なぜこのようなエラーが出るのかというと、"print"は"print = 10"を行った時点で整数の"10"が記録されてしまい、本来の"文字を表示する"という機能を失ってしまいました。(元々、文字を表示するための処理の情報が記録されていたものが、10という情報に上書きされてしまったことになります。)

"print"は"10"という値に置き換わってしまっているので、"print('Hello')"のコードは、"10('Hello')"というコマンドを実行していることと同じ意味になります。Pythonでは、整数の後ろに丸カッコを付けて処理を実行することができないため、エラーとなるわけです。

このような不具合が出る可能性があるため、組み込み関数の名前についても変数名に使用しないようにしましょう。どうしても他の候補が思いつかない場合は、アンダーバーを先頭につけて区別します。例えば、"type"を"_type"に書き換えるだけで、Pythonはそれらを全て区別して扱います。

処理の停止

先ほどのように処理が途中で止まってしまった場合、画面上部に表示されているアイコンの中の"Stop"ボタンをクリックすることで、処理を停止させることができ、エラーの表示も消すことができます。

おすすめの記事