D2MatE pythonページ (より進んだ話題)

python文法と作法

ファイル名の作法

詳細

の単位

python特有の規則: インデント

詳細
プログラムコード例: for i in [1, 2, 3, 4, 5]:
    x = 2.0 + i * 0.1

    print(f”i={i} x={x}”)

for s in [“a”, “b”, “c”, “d”, “e”]:
  line = ‘string is ‘ + s
  print(f”line={line}”)

exit()

コメント文

詳細

実行順序

詳細

変数名、関数名など

詳細

大文字と小文字を区別する

組み込み変数型

詳細

組み込み関数

詳細

変数作成

詳細

型変換

詳細

関数

詳細

関数の定義

def func0(args): 
    ここに処理を書く 

    # インデントブロックが終了すると、関数を終了する 
    # return文が無い関数の場合、戻り値はNoneになる 

def func1(args): 
    ここに処理を書く 

    return ret # return文があると、値を返す 

def func2(args): 
    ここに処理を書く 

    return ret1, ret2 # returnで複数の値を渡すと、戻り値はタプルとなる 

関数の引数

 位置引数とキーワード引数がある。

位置引数: 関数の呼び出し側で与えた引数の順番に対応して、関数定義の引数の値が決まる
キーワード引数: 関数の呼び出し側での引数の順番に関係なく、引数の値を与えることができる。
  key = def_val の形で引数を定義、呼び出し側では key = val で呼び出しを行う。
・ キーワード引数は、必ず位置引数の後に定義する
デフォルト引数: key = def_val の形の引数は、キーワード引数が与えられていない場合の初期値をdef_valで与える
デフォルト引数のデフォルト値は、プログラム実行時の初期化の最に確定される。
 
そのため、デフォルト値をミュータブルな変数、リストや辞書型で与えて、関数内で要素を書き換えると、
 後で関数を呼び出した際のデフォルト値が変わる
ので注意
 例:
  def func(a = []):
    a.append(1)
    return a

  print(func())   # [1] が出力される
  print(func())   # [1, 1] が出力される

  #出力
  [1]
  [1, 1]

*args: 関数定義で * を使うと、残りの位置変数をリスト変数 args に入れる
  例:
  def func(v1, v2, *options):
    print(f"{v1=}")
    print(f"{v2=}")
    print(f"{options=")

  func(1.0, 2, 3, 4, 5) 

  #出力
  v1=1.0
  v2=2
  options=(3, 4, 5) 

**kwargs: 関数定義で ** を使うと、残りのキーワード変数を辞書型のリスト kwargs に入れる
  例:
  def func(v1, *options, k1 = "a", **kwoptions):
    print(f"{v1=}")
    print(f"{options=}")
    print(f"{k1=}")
    print(f"{kwoptions=}")

  func(1.0, 2, 3, 4, k1 = "b", k2 = 3, op1 = "def") 

  #出力
  v1=1.0
  options=(2, 3, 4)
  k1='b'
  kwoptions={'k2': 3, 'op1': 'def'}

関数呼び出し

func0("a") # 引数"a"を与えてfunc0を呼び出す。returnがない関数なので、戻り値は受け取らない 

value = func1("a") # 引数"a"を与えてfunc1を呼び出す。戻り値を変数valueに受け取る 

value1, value2 = func2("a") # 引数"a"を与えてfunc2を呼び出す。returnで2つの戻り値を返すので、2つの変数value1, value2に受け取る 

values = func2("a") # 複数の戻り値がある場合、tuple変数 (要素を変更できない配列) valuesで受け取れる 
value1 = values[0] 
value2 = values[1]

グローバル (大域) 変数とローカル (局所) 変数

詳細

ライブラリのimport

詳細

よく使うpythonライブラリ

詳細

システム関係

ファイルの読み書き

グラフ関係

科学計算関係

pythonのkeyword

これらのkeywordは変数名、関数名などには使えません False, None, True, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield

classのマジックメソッド

インスタンスの特殊属性

モジュールの特殊属性

  1. __name__

インスタンスからclassを取得

type(obj)

class名の取得

print(obj.__class__.__name__) 

class属性の取得

print(MyClass.class_attr) 

インスタンス属性の取得

print(obj.instance_attr) 

クラスのすべての属性を取得

print(dir(MyClass))

インスタンスのすべての属性を取得

print(obj.__dict__) 

属性の存在を確認

hasattr(MyClass, 'class_attr')

インスタンス属性の存在を確認

hasattr(obj, 'instance_attr')

オブジェクトがclassのインスタンスかどうかを確認

class MyClass:
    pass

class SubClass(MyClass):
    pass

obj = MyClass()
print(isinstance(obj, MyClass)) # 第2引数にはclassを与える。継承した場合もTrue

sub_obj = SubClass()
print(isinstance(sub_obj, MyClass)) # True, SubClassはMyClassを継承しているため