Python - コードの書き方
対話モード(インタプリタ)からの実行
Python でコードを書くための方法のひとつに対話モード(インタプリタ)があります。以下のサンプルコードは、Windows 環境のコマンドプロンプトで実行しています。対話モードにするためには、コマンドプロンプトで python
と入力します。
C:\> python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
対話モードが起動されると >>>
と表示され入力待ちの状態になります。対話モードから Hello, World!
を出力するには、以下のように記述します。
>>> print("Hello, World!")
Hello, World!
プログラムが出力されると、再び入力待ちの状態に戻ります。このように入力待ちと出力が繰り返されるモードが対話モードです。
対話モードを終了させるためには Ctrl + z
キーを押します。
プログラムファイルからの実行
Python のプログラムをテキストファイルに保存して実行することができます。拡張子には .py
を付け、コマンドプロンプトから python
コマンドのパラメータとしてプログラムのファイル名を渡す方法です。例えば、テキストファイルに print('hello, world!')
と記述し、hello.py
という名前で保存したプログラムコードを実行する例は以下のとおりです。
#coding: UTF-8
print('hello, world!')
hello.py
C:\> python hello.py
hello, world!
式文
Python では、改行が文の区切りとなります。
print("Hello")
print("World")
文の区切りは ;
で表すこともできます。
a = 5; b = 3; c = a + b
print(c)
Python でプログラムコードの行を継続するには、継続文字の \
を使用します。行末に \
を加えると、Python はまだ行替えをしていないものと判断します。
例えば、一般的な継続文字を使用せずに長い文字列を作る場合は以下のようなコードになります。
>>> alphabet = ''
>>> alphabet += 'abcdefg'
>>> alphabet += 'hijklmnop'
>>> alphabet += 'qrstuv'
>>> alphabet += 'wxyz'
しかし、継続文字を使うと以下のように記述することができます。
>>> alphabet = 'abcdefg' + \
... 'hijklmnop' + \
... 'qrstuv' + \
... 'wxyz'
(...), [...], {...}
中のカンマの後ろは \
を省略することができます。
months = [ 'Jan', 'Feb', 'Mar', 'Apr',
'May', 'Jun', 'Jul', 'Aug',
'Sep', 'Oct', 'Nov', 'Dec' ]
コメントアウト
Python でプログラムをコメントアウトするには #
文字を使用します。#
文字を使用すると、Python はその文字が現れたところから行末までを無視します。コメントは、ブロックコメントとインラインコメントに分類され、行の先頭からのコメントをブロックコメント、途中からのコメントをインラインコメントと呼びます。また、他の言語のように複数行をコメントアウトする /* ... */
のような文字は Python にはありません。
# ブロックコメント
print(xxx) # インラインコメント
ただし、文字列の中に #
文字が含まれる場合は、コメントアウトする文字ではなくただの #
文字として扱われます。
>>> print("No comment: quotes make the # harmless.")
No comment: quotes make the # harmless.
(コメントではない。クォートを使うと#は無力になる。)
Python のコーディングルールをまとめたドキュメントである PEP8 の中には #
文字を使ったコメントについても推奨のルールが記載されています。
PEP8 のルールを遵守しなくとも文法上のエラーになるわけではありません。ただし、組織やプロジェクト、チームなどの複数人体制で開発を行う場合、コーディング規約として PEP8 に従った方が良いでしょう。
文とコメントの間は少なくとも 2 つのスペースを置くようにします。3 つ以上でも問題ありませんが、コメントの位置を揃えるために不要なスペースは除去します。
# No:
a = 1 # comment
# Yes:
a = 1 # comment
a = 1 # comment
xyz = 100 # comment
インラインコメントは #
文字と、スペース 1 つから始めます。#
文字のあとにスペースが無くても 2 つ以上あってもいけません。
# No:
a = 1 #comment
a = 1 # comment
# Yes:
a = 1 # comment
ブロックコメントはコメント内でインデントされたテキストでない限り #
文字と、スペース 1 つから始めます。#
文字のあとにはスペースが 1 つ以上必要です。
# No:
#comment
# Yes:
# comment
# indented comment
先頭の #
文字は 1 つだけにします。
# No:
## comment
# Yes:
# comment
インデント
Python ではインデントされた文がブロック (複文) とみなされます。インデントは、通常 4 個の空白文字を使用します。タブ文字は、インデントが 8 の倍数になるように 1~8 個の空白文字とみなされます。
a = 3
if a == 5:
print("A") # if文の対象
print("B") # if文の対象
print("C") # if文の対象ではない
エンコードルール
日本語など、ASCII 以外の文字を含むスクリプトを作成する場合は、スクリプトの 1 行目、または 2 行目にスクリプトのエンコードルールを指定してください。ただし、ファイルの文字コードが UTF-8 でエンコードされている場合、Python3 では記載は非推奨になっています。
# coding: utf-8
print "Hello world" # 文字列やコメントに日本語を使えるようになります
エンコードルールは、以下のいずれの記述方法でも構いません。
# coding: utf-8
# coding:utf-8
# coding=utf-8
# -*- coding: utf-8 -*- (Emacs 併用)
# -*- coding:utf-8 -*- (Emacs 併用)
# vim:fileencoding=utf-8 (Vim 併用)
utf-8
以外のエンコードルールには以下などがあります。
# coding: Shift_JIS
# coding: EUC-JP
# coding: cp932