Think Twice
IT技術メモ | Pythonのメモ
Created: 2020-12-10 / Updated: 2023-07-27

Pythonの文法


ここではPythonの文法を簡単にまとめておきます。特に記載のない場合、Python3を対象としています。

目次


基礎文法

Pythonの特徴

参考

コメント

行コメント

#以降が行コメントになります。

comment1.py
Copy
# これはコメント
print('Hello') # これもコメント

複数行コメント

シングルクォーテーション3つ(''')で囲むと複数行コメントになります。

comment2.py
Copy
'''
この行はコメント!
この行もコメント!
'''

Pythonはインデントでブロックを表現する言語なので、複数行コメントの場合はインデントに注意しましょう。
同じブロックにいないとエラーになります。

comment3.py
Copy
for x in {1, 2, 3}:
  print("text")
  '''
  forのブロック内でのコメントは
  同じインデントを付けて書く必要がある
  '''
  print(x)

'''
この行もコメント(forのブロックの外)
この行もコメント(forのブロックの外)
'''

参考

ハローワールド

printを使います。

hello1.py
Copy
print("Hello, World")
print("Hello, ")
print("World")

実行結果
Copy
$ python hello1.py
Hello, World
Hello, 
World

普通に呼び出すと、改行コード付きで出力されます。 改行コードなしにするには、end="" を付けます。

hello2.py
Copy
print("Hello, ", end="") # end="" とすると改行しない
print("World")

実行結果
Copy
$ python hello2.py
Hello, World

参考

コマンドライン引数

コマンドライン引数を渡す

Copy
$ python ファイル名.py 引数1 引数2 引数3 …

コマンドライン引数を受け取る

プログラム内でコマンドライン引数を受け取るにはsys.argvモジュールを使います。

Copy
import sys
print(sys.argv[0]) # ファイル名
print(sys.argv[1]) # 引数1
print(sys.argv[2]) # 引数2
print(sys.argv[3]) # 引数3

サンプルソース

参考

Copy
# ↓節
for i in range(100):  # ←ヘッダー
    print("Hello, World!")  # ←スイート:インデントされている、ヘッダーに制御される

文を複数行に分けて書く

参考

演算子

算術演算子

演算子 説明 評価結果
+ 足し算(加算) 2 + 2 4
- 引き算(減算) 7 - 1 6
* 掛け算(積算) 8 * 2 16
/ 割り算(除算) 13 / 8 1.625
// 整数の割り算(切り捨て) 13 // 8 1
% 割り算の余り(剰余) 14 % 4 2
** 累乗 2 ** 3 8

累算代入演算子

演算子 説明 iの評価結果
+= 足し算 i += 2 7 (iが5の場合)
-= 引き算 i -= 2 3 (iが5の場合)
*= 掛け算 i *= 2 10 (iが5の場合)
/= 割り算 i /= 2 2.5 (iが5の場合)
**= 累乗 i **= 2 25 (iが5の場合)

比較演算子

論理演算子

参考書籍

参考サイト

インクリメントとデクリメント

インクリメント

デクリメント

参考サイト

代入式

Copy
i = 5
while (i := i - 1):
    print(i)
出力結果
Copy
4
3
2
1

参考サイト

参照

条件分岐 - if文

if文
Copy
if 条件式:
    # 条件式が真の時に実行する処理1
    # 条件式が真の時に実行する処理2

条件式が偽の場合に別の条件を指定するにはelifを使います。
else ifではないのでご注意下さい。

if-elif文
Copy
if 条件式1:
    # 条件式1が真の時に実行する処理1
    # 条件式1が真の時に実行する処理2
elif 条件式2:
    # 条件式2が真の時に実行する処理1
    # 条件式2が真の時に実行する処理2

条件式が偽の場合に実行するブロックを指定するにはelseを使います。

if-else文
Copy
if 条件式:
    # 条件式が真の時に実行する処理1
    # 条件式が真の時に実行する処理2
else:
    # 条件式が偽の時に実行する処理1
    # 条件式が偽の時に実行する処理2

elifelseは組み合わせられます。

if-elif-else文
Copy
if 条件式1:
    # 条件式1が真の時に実行する処理1
    # 条件式1が真の時に実行する処理2
elif 条件式2:
    # 条件式2が真の時に実行する処理1
    # 条件式2が真の時に実行する処理2
else:
    # 条件式1,条件式2がともに偽の時に実行する処理1
    # 条件式1,条件式2がともに偽の時に実行する処理2

Copy
home = "日本"
if home == "日本":
    print("Hello, Japan!")
elif home == "タイ":
    print("Hello, Thailad!")
elif home == "インド":
    print("Hello, India!")
elif home == "中国":
    print("Hello, China!")
else:
    print("Hello, World!")
出力結果
Copy
Hello, Japan!

ソース

参考

関数

リストの展開・辞書の展開

リストの展開
Copy
def func_list(arg1, arg2, arg3):
    print("arg1 =" + str(arg1))
    print("arg2 =" + str(arg2))
    print("arg3 =" + str(arg3))

lst = [10, "aaa", True]
func_list(*lst)
出力結果
Copy
arg1 =10
arg2 =aaa
arg3 =True
辞書の展開
Copy
def func_dict(key1, key2, key3):
    print("key1 =" + str(key1))
    print("key2 =" + str(key2))
    print("key3 =" + str(key3))

dic = {"key3": 10, "key2": "aaa", "key1": True}
func_dict(**dic)
出力結果
Copy
key1 =True
key2 =aaa
key3 =10

ソース

参考

クラス

クラスの定義

通常のクラス定義

Copy
class クラス名(継承元クラス名):
    """クラスのドキュメンテーション"""
    def method1(self, ...):
       処理
        :
        :

    def method2(self, ...):
       処理
        :
        :

空クラス

Copy
class クラス名:
    pass

参考サイト

クラスの継承

クラスの継承

子クラス内から親クラスのメソッド呼び出し

親クラスのコンストラクタ呼び出し

Copy
class User:
    def __init__(self, name="", age=0):
        self.name = name
        self.age = age

class Employee(User):
    def __init__(self, name, age, department):
        super().__init__(name, age)
        self.department = department

オーバーライド

Copy
class User:
    def __init__(self, name="", age=0):
        self.name = name
        self.age = age

    def say_name(self):
        print("私の名前は" + self.name + "です。")

class Employee(User):
    def __init__(self, name, age, department):
        super().__init__(name, age)
        self.department = department

    def say_name(self):
        print("名前は" + self.name + "、所属部署は" + self.department + "です。")

多重継承

Copy
class Base1:
    def func1(self):
        print('func1')
 
class Base2:
    def func2(self):
        print('func2')
     
class Sub(Base1, Base2):
    def func(self):
        super().func1()
        super().func2()
 
obj = Sub()
obj.func()

参考サイト


参考

関連メモ

参照

参考サイト

参考書籍

ソース