KNIMEST’s diary

KNIME使いがPythonも使いたくて勉強中

【Python学習帳】005_変数の命名ルール

初学者を対象としている京都大学の無料Python教材の学習中です。
「プログラミング演習 Python 2021」
Version2021_10_08_01.pdf

http://hdl.handle.net/2433/265459
CC-BY-NC-NDライセンスに従って引用します。

本教材での到達目標:

Python によるプログラムの実行についての基本操作ができるようになる.
Python プログラムを構成する基本的要素の機能と書式について説明し,例題を用いて実行例を構成できるようになる.
Python を用いて簡単なプログラムを自ら設計,実装,テストできるようになる.

前回までにPython によるプログラムの実行環境確認と基本操作を学びました。

knimest.hatenablog.com

今回からは第3章、「変数と演算,代入」で以下を学びます。

Python のプログラムでの「実行の流れ」と「情報の流れ」を理解し,順次実行について知る.
● プログラムでの変数の命名と代入,評価について知る.
Python の基本的なデータ型を知る.
● データ(オブジェクト)の型を調べる type() 関数とオブジェクトの所在を調べる id() 関数について知る.

プログラムは基本的には上から下へ流れることや、変数の役割について紹介があり、変数の命名ルールについて学びました。

3.3.2変数の命名ルール 
以下のルールを覚えておいてください. 
● 英大文字,英小文字,数字,アンダースコア(_)を使う. 
● 大文字と小文字は区別される. 
● 数字を先頭に使ってはいけない. 命名における推奨事項
Python の文法で使用する予約語(例えば if など,IDLE Editor では予約語は赤 字で表示されます)は使えない. 

日本語(漢字など)の変数名も利用可能ですが,あまり使われていません

PythonではなくVBAでしたが、関数名や変数名を日本語で定義してあるコードを見たことがあります。動かないわけではないし、その関数の働きがわかりやすいのは確かなのですが将来のリスクになるのではと不安に思ったことを思い出しました。

「3.3.3 分かりやすい変数名を使う」にもさらに命名時の推奨ルールが示されていました。

● プログラムでの意味を表す命名をしましょう.
● 1 文字などの短い変数名はできるだけ狭い範囲だけで有効な変数として使いま しょう.特に l, o, O (小文字のエル,小文字のオー,大文字のオー)などは数字の 1 (イチ)や 0 (レイ,ゼロ)と紛らわしいため使用しないようにします. 
● 大文字ではなく,小文字を使いましょう.大文字は値を変化させない定数を表すことに使われることが多いためです. 
● 複数語の変数名は単語の間をアンダースコア「_」で区切ります.たとえば 「street_name」など 
● できれば英語を使うプログラムは当初の意図とはずれて,想定外に成長し多くの方に使われる場合があります.海外の方に使われる場合もあるので, 予め英語で命名しておくといいでしょう.

変数名以外にも,どのようにプログラムを書くと分かりやすいかは重要な点です.Python では PEP8 というプログラムを書く際のコーディング規約が提唱されています.

として引用されているのが下記サイトです。

PEP 8 – Style Guide for Python Code | peps.python.org

日本語ならこちら

pep8-ja.readthedocs.io

ここにも変数の命名ルールが定められているそうでした。余りに情報量が多いので以下抜粋してくれている記事を紹介しておきます。

python-academia.com

今まで適当に変数の名前を付けてきたことを自省しています。

変数の名前の付け方をおさらいするだけで1000文字を超えてしまいました。第3章は何回かに分けて学習帳を記すことになりそうです。今回は下記の課題までとします。

演習 3-2 さまざまな変数名を利用する練習. 
p2-1.py で示したプログラムについてシェル上での実行で構いませんから,変数名をさまざまに代えて練習してみてください. 
● 1 行目と2行目の変数名を両方,同一のものに変更しなければならないことに 注意してください. 
● 複数語をアンダースコアで接続した変数名も試すこと. 
● また,先頭に数字を用いた場合,予約語を用いた場合などにどのようなエラーが生じるかも併せて試みてください.

一番最後に示された予約語の課題ですが、予約語は下図の通り教材に例示されてましたので、ifなど使ってみました。

「プログラミング演習 Python 2021」 Version2021_10_08_01.pdf http://hdl.handle.net/2433/265459

なるほど、”if”は変数とは認識されていませんね。予約語だから赤色表示されているようです。

“If”だと予約語じゃないんですね。普通に変数として機能しました。

“print”だとまた違うエラー結果でした。

このエラーメッセージを見て、変数の命名が不適切だったと気付けるもんだろうかとは思いましたが。

わざとエラーを出して理解を深めるという体験、なかなか興味深いです。

 

次回は変数の代入を体験します。

knimest.hatenablog.com