Pythonの基本構文#

改行#

Python では、改行が文の区切りとなります。

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

または、セミコロン(;)で区切ることもできます。

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

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

total = 123 \
      + 456 \
      + 789
print(total)
1368

コメント(#)#

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

コメントはプログラムの実行には影響せず、プログラムのコードを読む人に向けたメモや説明のために使われます。

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

インデント#

Python ではインデント(行頭の空白文字の数)が重要な意味を持ち、同じ数の空白やタブ文字でインデントされた文がブロックとみなされます。

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

  • 同じブロックのコードは同じ量のインデントが必要です:あるブロック(例えば、関数の本体、ループの内部、条件文の内部など)内のすべての行は同じレベルのインデントでなければなりません。

  • ブロックが終了すると、インデントは元に戻ります:ブロックの最後の行に到達すると、次の行はそのブロックを開始する前のインデントレベルに戻ります。

for i in range(5):
    print(i)  # ループの内部でインデントされています
    if i == 3:
        print("Found three!")  # 条件文の内部でさらにインデントされています

print("Loop finished")  # ループの外で、インデントは元に戻ります
0
1
2
3
Found three!
4
Loop finished

変数#

変数の命名#

Pythonで変数を定義できます。変数とは、プログラムで使いたいメモリ上の値に名前を付けたものです。値を保存したり参照したりするために使用されます。

Pythonで変数の作成は、いくつかのルールがあります。

  • 大文字と小文字を区別する:chss,Chss, CHSSはすべて異なる名前です。

  • 先頭で数字は使えないです。例えば、1aは無効な変数名です。

  • Pythonの予約語を避けます。

予約語の一覧を表示#

Note

強制ではないですが、可読性を向上するために、できるだけ推奨される命名規則にしたがった方が良いです。

対象 ルール
パッケージ 全小文字 なるべく短くアンダースコア非推奨 tqdm, requests ...
モジュール 全小文字 なるべく短くアンダースコア可 sys, os,...
クラス 最初大文字 + 大文字区切り MyFavoriteClass
例外 最初大文字 + 大文字区切り MyFuckingError
型変数 最初大文字 + 大文字区切り MyFavoriteType
メソッド 全小文字 + アンダースコア区切り my_favorite_method
関数 全小文字 + アンダースコア区切り my_favorite_funcion
変数 全小文字 + アンダースコア区切り my_favorite_instance
定数 全大文字 + アンダースコア区切り MY_FAVORITE_CONST
help("keywords")
Here is a list of the Python keywords.  Enter any keyword to get more help.

False               break               for                 not
None                class               from                or
True                continue            global              pass
__peg_parser__      def                 if                  raise
and                 del                 import              return
as                  elif                in                  try
assert              else                is                  while
async               except              lambda              with
await               finally             nonlocal            yield

代入#

=を使って変数に値を代入する。

a=5
print(a)
print(a+5)
5
10

Advanced

多くのプログラミング言語では、変数自体が型を持ち、メモリ位置が固定されているが、Pythonの場合、変数はただの名前です

../_images/immutable1.png

つまり、代入は値をコピーするわけではない、データを入れてあるオブジェクトに名前を付けるだけです。名前はものの参照手段であり、もの自体ではないです。

変数の代入は、メモリ内のどこかにあるオブジェクトに長いヒモで繋がるというイメージです。そのため、CJAVAのような静的言語では変数の型を明確的に指定しなければないが、Pythonでは型を指定する必要はありません。

../_images/immutable21.png
../_images/immutable31.png
#新たに生成したように見えるbは同じ値を指しているので、変数も値そのものもIDは同じになります。
a=5
b=5
print("a:{},b:{},5:{}".format(id(a),id(b),id(5)))
a:4455430576,b:4455430576,5:4455430576
#変数の型が異なるなら、変数IDも異なっています。
a='5'
b=5
print("a:{},'5':{},b:{},5:{}".format(id(a),id('5'),id(b),id(5)))
a:4457904240,'5':4457904240,b:4455430576,5:4455430576