Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの関数名・識別子に使用できる文字とは?命名ルールを徹底解説

Pythonにおける識別子(Identifier)とは?

Pythonにおいて、クラス名、関数名、変数名など、プログラム内のさまざまな要素に付ける名前のことを識別子(identifier)と呼びます。識別子は、それぞれの要素を他と区別するために欠かせないものです。

この記事では、関数名や変数名としてどのような文字が許可されているのか、そのルールと注意点を具体例とともに解説します。

識別子に使用できる文字のルール

Pythonの識別子には、以下の文字を組み合わせて使用できます。

  • 英字の小文字(a〜z)
  • 英字の大文字(A〜Z)
  • 数字(0〜9)
  • アンダースコア(_)

たとえば myClassvar_3print_to_screen などはすべて有効な識別子です。

ルール1:数字から始めてはいけない

識別子の先頭に数字を使うことはできません。2variable は無効ですが、variable2 のように途中以降に数字を含めるのは問題ありません。

ルール2:キーワード(予約語)は使用できない

globaliffor など、Pythonで特別な意味を持つキーワードは識別子として利用できません。以下のように global を変数名として使おうとすると、構文エラーが発生します。

コード例

global = "syntax"
print(global)

実行結果

File "identifiers1.py", line 1
    global = "syntax"
           ^
SyntaxError: invalid syntax

解説:このコードでは、キーワードである global を変数名(識別子)として文字列を代入しようとしているため、構文エラー(SyntaxError)が発生しています。

ルール3:特殊記号は使用できない

!@#$% などの特殊記号を識別子に含めることはできません。次の例では、変数名に $ を使用しているためエラーになります。

コード例

$local = 5
print($local)

実行結果

File "identifiers2.py", line 1
    $local = 5
    ^
SyntaxError: invalid syntax

解説:変数名に特殊文字 $ が含まれているため、整数値を代入するコードを実行した際に構文エラーとなります。

補足:Python 3では日本語などのUnicode文字も使用可能

Python 3以降では、識別子に日本語を含むUnicode文字を使用することも技術的には可能です。ただし、コードの可読性や移植性を考慮すると、英字・数字・アンダースコアのみで構成された識別子を使うのが一般的なベストプラクティスとされています。

まとめ

  • 識別子には英字・数字・アンダースコアのみ使用できる
  • 先頭を数字にすることはできない
  • キーワード(予約語)は識別子として使えない
  • 特殊記号(!、@、#、$、%など)は含められない

これらのルールを守ることで、エラーのない読みやすいPythonコードを書くことができます。

  1. Pythonのfilter()関数とは?使い方と実行例をわかりやすく解説

    Pythonのfilter()関数は、リストなどのシーケンスから特定の条件に合う要素だけを抽出(フィルタリング)するための組み込み関数です。フィルタリングの条件は、別途定義した関数の中で記述します。まず条件を定めたユーザー定義関数を作成し、その関数と対象となるリストをfilter()関数に引数として渡すことで、条件を満たす要素だけを取得できます。 基本構文 filter(filter_function, sequence) filter_functionには各要素を判定する関数を、sequenceにはリストやタプルなどのイテラブル(反復可能オブジェクト)を指定します。判定関数がTrueを返

  2. Pythonのグローバルインタプリタロック(GIL)とは?仕組みと課題をわかりやすく解説

    本記事では、Pythonのグローバルインタプリタロック(GIL:Global Interpreter Lock)について詳しく解説します。GILとは、複数のスレッドが同時にPythonインタプリタのコードを実行できないよう制御する排他制御機構(ロック)のことです。この仕組みにより、マルチスレッド環境であっても、実際には一度に1つのスレッドしかPythonバイトコードを実行できません。そのため、GILはPython 3.x以前における設計上の課題として認識されることが多く、真の意味でのマルチスレッド処理を妨げる要因となっています。GILが導入された理由Pythonは自動ガベージコレクション(GC