LogoMark.png

Python/Syntax のバックアップ(No.3)


Python Syntax

Python の基本文法

CONTENTS




変数・数値・文字列

変数

Pythonの変数には、オブジェクトの代入が可能です。数値も文字列もオブジェクトの一つとして扱われます。

>>> x = 256
>>> a = "hello"

対話型の操作では、変数名+ [Enter] で変数の内容が表示されます。

>>> a
"hello"


数値

整数と浮動小数点数の2種類があります。


文字列

コレクション型

コレクション型とは、複数の値をまとめるデータ型で、一般の配列に相当する「リスト」と「タプル」、また一般の連想配列に相当する「辞書」と「集合」、計4つの型が存在します。


付記:Pythonの配列について

Python で言う「配列」は 「リスト」のことで、[ ] を使って表記しますが、「異なる型のデータを混在できる」、「事後的にデータの追加ができる(要素数を増やせる)」など、他の言語の配列とは様子が異なります。




演算子

算術演算子

Python で用意されている演算子には以下のようなものがあります。

演算子意味出力
+加算2+13
-減算3−4-1
*乗算4*520
/除算7/80.875
%剰余8%32
//切り捨て除算9/24
**指数7**249
divmod商と余りdivmod(8,3)(2,3)


比較演算子

Python で用意されている比較演算子は以下。結果は True または False です。

演算子意味
x == yx と y が等しい
X != yx と y が等しくない
x > yx は y よりも大きい
x < yx は y よりも小さい
x >= yx は y と等しいか大きい
x <= yx は y と等しいか小さい
x in yx という要素 が y に存在する
x not in yx という要素 が y に存在しない


論理演算子

Python で用意されている論理演算子は以下。結果は True または False です。

演算子意味解説
x or y論理和どちらか 1 つが True なら True それ以外は False
x and y論理積x と y がどちらも True なら True それ以外は False
not x否定x が True なら False、 x が False なら True




制御文

ブロックとインデント

if 文や for 文などの制御では複合文の記載が必要になるます。JavaScript や PHP では { から } までが複合文が書かれる「ブロック」となりますが、Pythonでは、囲み記号を使わず、同じインデント(字下げ)がなされている文をブロックとして扱います。

if 条件式:
    ブロック内の処理1
    ブロック内の処理2

インデントの位置をさらにずらすことでブロックの「入れ子」が実現します。

if 条件式:
    ブロック内の処理1
    ブロック内の処理2
    if 条件式:
        ブロック内の処理1
        ブロック内の処理2


条件分岐|if

if 条件式1:
    条件式1が真の時に実行する文
    ...
elif 条件式2:
    条件式1が偽で条件式2が真の時に実行する文
    ...
else:
    すべての条件式が偽のときに実行する文
     ...


繰り返し| for

繰り返し|while

関数

関数の定義

関数の利用

定義した関数は、以下のようにして主たるプログラムで利用できます。

クラス

オブジェクト指向プログラミングでは、プロパティ(属性)とメソッド(関数)をカプセル化したクラスを定義するとともに、そのクラス(雛形)からインスタンス(オブジェクトの実体)を生成させて、利用します。

プロパティやメソッドは、以下のように [ . ] 接続で記述します。

クラスの定義

インスタンス変数

クラス変数


メソッド

メソッドとはクラスが持つ関数です。メソッドの第一引数には、クラスのインスタンスを指定し、第二引数以降で、メソッドの引数を受けます。

class MyClass:
    def setName( self, name ):     # 第一引数は self
        self.name = name

myInstance = MyClass()
myInstance.setName("John")
print( myInstance.name )

------実行結果-------
John


サンプルプログラム

# クラスの定義
class myClass:
    def __init__( self ):           # コンストラクタ(メソッドの一種)
        self.a = 0                     # インスタンス変数1
        self.b = 0                     # インスタンス変数2
    def add( self , a, b ):        # メソッド
        self.a = a                     # インスタンス変数1
        self.b = b                     # インスタンス変数2
        s = self.a + self.b         # 合計を計算
        return s

# メインプログラム
obj1 = myClass()     #初期化
obj2 = myClass()     #初期化
print("初期のインスタンス変数:", obj1.a , obj1.b,  obj2.a , obj2.b )

sum1 = obj1.add( 3 , 5 )    #メソッドの実行
sum2 = obj2.add( 7 , 8 )    #メソッドの実行
print("実行後のインスタンス変数:", obj1.a , obj1.b,  obj2.a , obj2.b )
print("実行後の戻り値:", sum1, sum2 )

 --- 実行結果 ---
初期化時点の変数: 0 0 0 0
メソッド実行後の変数: 3 5 7 8
メソッド実行後の戻り値: 8 15




モジュール

Pythonが機能を分類する単位をモジュールといいます。例えば、sin関数などの数学関連の機能は math という名前のモジュールに含まれていて、これを利用する場合は、まずそのモジュールを import 文でインポートします。

モジュールの利用

自作関数のモジュール化

自作関数は、以下のように別ファイルとして利用することができます。
以下、myModule と main.py が同じフォルダ内にある場合の例です。

コメント

Python では # 記号以降はコメントとして扱われます。プログラム上で文の機能を一時的に無効にする(コメントアウト)場合にも利用可能です。

インラインコメント

#から行末までは実行時に無視されます。#より前のコードは有効です。

a = 1  # comment


ブロックコメント(行全体)

行頭に#を書くと、行全体コメントとなり、実行時には無視されます。

a = 1
# b = 2
# c = 3
d = 4