You are here: Home > Dive Into Python > 組み込みのデータ型 > 変数の宣言 | << >> | ||||
Dive Into PythonPython from novice to pro |
さて辞書やタプルやリスト (なんと!) についていくらか学んだので, 2 章 のサンプルプログラム odbchelper.py に戻りましょう.
他のほとんどの言語と同じように, Python にはローカル変数とグローバル変数がありますが, 明示的な変数宣言はありません. 変数は値を割り当てられると出現し, スコープを外れると自動的に破棄されます.
if __name__ == "__main__": myParams = {"server":"mpilgrim", \ "database":"master", \ "uid":"sa", \ "pwd":"secret" \ }
インデントに注意してください. if 文はコードブロックであり関数のようにインデントを付ける必要があります.
また, 変数割り当てという 1 つの命令が, バックスラッシュ (“\” 訳注. 環境によっては円マークに見えるかもしれません) という行継続記号によって複数行に分割されているのに注意してください.
行継続記号 (“\”) を使って 1 つの命令を複数行に分割するときには, 継続する行のインデントは好きなように付けられます. Python の通常の厳格なインデントのルールは適用されません. Python IDE が自動で継続行にインデントを付ける場合には, 重大な理由がない限りデフォルトのインデントを受け入れた方が良いでしょう. |
厳密に言うと, 丸括弧や角括弧や (辞書の定義のときのような) 波括弧の途中では, 行継続文字 (“\”) を使っても使わなくても複数行に分割できます. ただ, 私はコードを読むのが簡単になると考えるので, 必要が無いときでもバックスラッシュを書く方が好きです. これは書き方のスタイルの問題です.
3 つ目に, 変数 myParams の宣言を一切せず, 単に値を割り当てているのに注意してください. これは option explicit オプションを外した VBScript に似ています. 幸いなことに, VBScript と違って, Python では値が割り当てられていない変数を参照することはできません. 参照しようとすると例外が送出されます.
>>> x Traceback (innermost last): File "<interactive input>", line 1, in ? NameError: There is no variable named 'x' >>> x = 1 >>> x 1
いつか Python の有り難みが分かりますよ.
Python の格好良いショートカットの 1 つが, シーケンスを使って一度に複数の値を割り当てることです.
これには色々な使い道があります. 私はある範囲の値に名前を付けたいことがよくあります. C では, enum を使ったり (訳注. ここは and で連接されていますが, 意味が通らないので or のように訳しました), 手作業で定数と値を列挙するでしょうが, 値が連続している場合は特に面倒に感じます. Python では, 組み込みの range 関数と複数変数割り当ての仕組みを使って, 簡単に連続した値を割り当てることができます.
>>> range(7) [0, 1, 2, 3, 4, 5, 6] >>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7) >>> MONDAY 0 >>> TUESDAY 1 >>> SUNDAY 6
複数変数割り当ての仕組みを使って, 全ての値をタプルにまとめて返すことで, 複数値を返す関数が作れます. 呼び出し側はそれをタプルとして扱うこともできますし, 別の変数に値を割り当てることもできます. Chapter 6 で議論する os モジュールなど, 多くの Python の標準ライブラリはそのようにしています.
<< タプルの紹介 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
フォーマット文字列 >> |