IT・個人事業

Pythonの*argsと**kwargsを理解する

公開:

※ 本記事にはアフィリエイト広告(Amazonアソシエイト・楽天アフィリエイト等)が含まれています。

Python #9

Pythonでcsvデータの加工やpandasの使い方

引数の数を自由に増やせるパラメーター *args

今まで引数を設定するパラメーターはdefを定義するときに指定をしていました。

以下のようにaddの関数に事前にn1とn2というパラメーターを設定して、呼び出すときにそれぞれの引数を設定していました。

def add(n1, n2):
    return n1 + n2

print(add(3, 5))

しかし、引数を沢山追加したい時どうすればいいでしょうか?

そんな時に使えるのが *args です。

例えば、引数全ての合計を出す関数を定義するときには以下のようにすることが出来ます。

def add(*args):
    return sum(args)
add(3, 5)
add(3, 5) の引数はいくつでも増やすことができます。ちなみに、`*args` は `*` がついていれば他のパラメーター名にすることが可能です。`*nums` でも、`*numbers` でも使えます。
def add(*numbers):
    return sum(numbers)
print(add(3, 5, 20, 15))

また、*args のデータ型はタプル型となります。

パラメーター名を指定する **kwargs とgetの組み合わせ

*args は引数をいくつでも設定することができましたが、パラメーター名を指定することができません。

パラメーター名を指定するには**kwargs を使用します。

**kwargs*args 同様に ** がついていればkwargsにこだわらなくてもいいです。kwを書いても機能します。

また、*args がタプル型なのに対して、**kwargs は辞書型のデータになります。

class Hospital:
    def __init__(self, **kwargs):
        self.hos = kwargs["hos"]
        self.dep = kwargs["dep"]

my_hospital = Hospital(hos="東京**医院", dep="外科")
print(my_hospital.hos)

上記のコードのように記述することができますが1つ問題があります。それは引数を宣言しないとエラーがおきることです。

すべてのパラメーターに引数を宣言するのは大変なので、引数を宣言しない場合はNoneをかえしてくれるget()を利用します。

Python #11

Pythonでcolorgramを使って画像から色を取り出してみる

ぜひ参考にしてください!また!