関数
基本
def functionA(): print("関数です") functionA()
引数
引数の初期値も設定できます。また値は数値や文字列だけでなく、リストやタプル、辞書型、Numpy、Pandasなどでも引数として渡せます。
def functionA(num1, str1, list1, num2=100): print(num1, str1, num2) print(list1) data = [1, 2, 3, 4, 5] functionA(123, "aaa", data)
以下のように、引数の変数を指定すると、指定する順序が違っても、指定した変数に値が挿入されます。
def functionA(num1, str1, list1, num2=100): print(num1, str1, num2) print(list1) data = [1, 2, 3, 4, 5] functionA( list1 = data, num1 = 123, str1 = "aaa" ) # 123 aaa 100 # [1, 2, 3, 4, 5]
可変長引数
可変長引数は、予め決まった個数ではなく、任意の個数を受け渡すことができます。
タプル型で受け渡す
関数の引数を*args
とするだけです。他の引数と合わせて指定することもできます。
def functionA(*args): print(args) data = [1, 2, 3, 4, 5] functionA(123, "aaa", data) # (123, 'aaa', [1, 2, 3, 4, 5]) def functionB(num1, *args): print(num1) print(args) data = [1, 2, 3, 4, 5] functionB(123, "aaa", data) # 123 # ('aaa', [1, 2, 3, 4, 5])
辞書型(連想配列)で受け渡す
関数の引数を**kwargs
とするだけです。
以下の例にはありませんが、他の引数と合わせて指定することもできます。
def functionA(**kwargs): print(kwargs) data = [1, 2, 3, 4, 5] functionA( num1 = 123, str1 = "aaa", data = data ) # {'num1': 123, 'str1': 'aaa', 'data': [1, 2, 3, 4, 5]}
戻り値(返り値)
基本
def functionA(num1, num2): return num1+num2 aaa = functionA(123, 456) print(aaa) # 579
2つ以上を返す
以下のように、個別の変数として、またはリストなどとして返すということができます。もちろん例えばPandasのデータフレームを返すこともできます。
def functionA(num1, num2): num1 = num2 * 2 num2 = num2 * 3 return num1, num2 aaa, bbb = functionA(123, 456) print(aaa, bbb) # 912 1368 def functionB(num1, num2): num1 = num2 + 1 num2 = num2 + 2 return [num1, num2] aaa = functionA(123, 456) print(aaa) # (912, 1368) print(aaa[0]) # 912
クラス
掘り下げると結構大変なので概要だけです。
基本
def __init__でクラスの初期値などを設定します。コンストラクタですね。
class classA: def __init__(self): self.aaa = 100 self.sss = zzz def functionA(self): print("Classです", self.aaa, zzz) zzz = "ZZZ" insA = classA() print(insA.aaa, insA.sss) # 100 ZZZ insA.functionA() # Classです 100 ZZZ
引数
引数の初期値も設定できます。また値は数値や文字列だけでなく、リストやタプル、辞書型、Numpy、Pandasなどでも引数として渡せます。関数と同じですね。
class classA: def __init__(self, num1, num2=200): self.aaa = 100 self.bbb = num1 self.ccc = num2 def functionA(self, num3, num4=300): print(num3, num4) insA = classA(123) print(insA.aaa, insA.bbb, insA.ccc) # 100 123 200 insA.functionA(456) # 456 300
戻り値(返り値)
関数と基本的に同じですね。
class classA: def __init__(self, num1, num2=200): self.aaa = 100 self.bbb = num1 self.ccc = num2 def functionA(self, num3, num4=300): num3 += self.aaa num4 += self.bbb return num3, num4 insA = classA(123) zzz = insA.functionA(456) print(zzz) # (556, 423)
継承
class classA(): def __init__(self): self.aaa = 100 def functionA(self): print("Aです") class classB(classA): def __init__(self): self.bbb = 100 def functionB(self): print("Bです") insB = classB() insB.functionA() # Aです insB.functionB() # Bです
コメント