Python 関数とクラス

スポンサーリンク
スポンサーリンク

関数

基本

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です

 

 

コメント

タイトルとURLをコピーしました