とほほのPython入門 - 構文

トップ > Python入門 > 構文

目次

Hello world!

Pythonスクリプトファイルの拡張子は .py(例: test.py) です。Python 2 で Hello world! を出力するプログラムは下記の様に記述します。

Python 2
print "Hello world!"

Python 3 では下記の様に記述します。以降では基本的に Python 3 に従って記述していきます。

Python 3
print("Hello world!")

プログラムが完成したら、次のように実行します。Python 3 の場合コマンドが python3 となる場合があります。

Python
python test.py

文・式

Python では、改行が文の区切りとなります。改行は Linux系の LF、Windows系の CR LF、旧Mac系の CR いずれも利用できます。

Python
print("Hello")
print("World")

Perl や PHP の様にセミコロン(;)で区切ることもできます。

Python
a = 5; b = 3; c = a + b
print(c)

文を数行に分けて記述したい場合は、行末にバックスラッシュ(\)を書きます。

Python
total = 123 \
      + 456 \
      + 789

(...), [...], {...} 中のカンマ(,)の後ろはバックスラッシュ(\)を省略することができます。

Python
months = [ 'Jan', 'Feb', 'Mar', 'Apr',
           'May', 'Jun', 'Jul', 'Aug',
           'Sep', 'Oct', 'Nov', 'Dec' ]

コメント(#)

ハッシュ(#)から行末まではコメントとみなされます。

Python
print("Hello")      # Helloと表示します

ただし、バックスラッシュによる継続行の箇所にはコメントを記述することができません。

Python
total = 123 \       # ここにコメントは記述できない
      + 456         # ここには記述できる

カンマ(,)による継続行にはコメントを記述することができます。

Python
months = [ 'Jan', 'Feb', 'Mar', 'Apr',     # ここにはコメントを記述できる
           'May', 'Jun', 'Jul', 'Aug',     # ここにはコメントを記述できる
           'Sep', 'Oct', 'Nov', 'Dec' ]

インデント

Perl や PHP では文を { ... } で囲むことでブロック(複文)を構成しますが、Python ではインデント(行頭の空白文字の数)が重要な意味を持ち、同じ数の空白やタブ文字でインデントされた文がブロックとみなされます。

Python
a = 3
if a == 5:
    print("AAA")        # if文の対象
    print("BBB")        # if文の対象
print("CCC")            # if文の対象ではない

インデントは通常4個の空白文字を使用します。

Python
if a == 5:
    print("AAA")        # 4個の半角空白文字

インデントにタブ文字(U+0009)を用いる場合、半角スペースを用いるか、タブ文字を用いるか統一が必要です。統一されていない場合 TabError: inconsistent use of tabs and spaces in indentation エラーが発生します。

Python
if a == 5:
        print("AAA")      # この行は半角スペースインデントなのに
[=TAB==]print("BBB")      # この行がタブインデントだと TabError

エンコードルール(coding:)

スクリプトの1行目か2行目に coding[=:]\s*([-\w.]+) にマッチするコメントが記述されていると、スクリプトが指定されたエンコードルール(文字セット)で記述されているものとみなします。Python 2 で日本語を扱う場合は必須でしたが、Python 3 では記載が無い場合は utf-8 とみなすようになりました。

Python
# coding: utf-8

print("Hello world")   # 文字列やコメントに日本語を使えるようになります

UNIX系のテキストエディタ Emacs との互換性を考慮し、下記の様に記述することもあります。

Python
# -*- coding: utf-8 -*-

エンコードルールには下記などがあります。

Python
# coding: utf-8
# coding: Shift_JIS
# coding: EUC-JP
# coding: cp932

print文

print は Python 2 と Python 3 で実装が変わっています。Python 2 では括弧無しで引数を指定します。

Python 2
print "ABC"

Python 3 では括弧付きで引数を指定します。

Python 3
print("ABC")

引数には数値、配列、タプル、オブジェクトなどを指定することができます。

Python
print(3)                   #=> 3
print([1, 2, 3])           #=> [1, 2, 3]
print((1, 2, 3))           #=> (1, 2, 3)
print({'k1':10, 'k2':20})  #=> {'k2': 20, 'k1': 10}

引数をカンマ(,)で複数指定すると、ひとつのスペースで区切って複数の値を表示します。

Python
print("AAA", "BBB")         #=> AAA BBB

通常は、最後に改行(\n)を書き出します。Python 2 では最後の引数の後ろにカンマ(,)をつけると、改行しません。

Python 2
print "AAA",               # 改行しない
print "BBB"                # 改行する

Python 3 では end="" を指定することで改行無しとなります。

Python 3
print("AAA", end="")        # 改行しない
print("BBB")                # 改行する

下記の様に、フォーマットを指定することもできます。

Python
print("My name is %s." % "Tanaka")
print("%s is %d years old." % ("Tanaka", 28))
print("%(name)s is %(age)d years old." % {'name': "Tanaka", 'age': 28})

Python 2 で標準出力以外に出力するには、>> を用います。

Python 2
f = open("test.txt", "w")
print >> f, "Hello world!"
f.close()

Python 3 では file= を用います。

Python 3
f = open("test.txt", "w")
print("Hello world!", file=f)
f.close()

Copyright(C) 2014-2022 杜甫々
初版:2014年12月30日、最終更新:2022年10月9日
http://www.tohoho-web.com/python/syntax.htm