Help us understand the problem. What is going on with this article?

[Python]関数引数の*(star)と**(double star)

More than 1 year has passed since last update.

Pythonでは任意個の引数を受け取る関数を作る時に*か**を引数の前につける。

関数側から見ると*をつけるとTupleになり、**をつけるとDictionaryで受け取ることになる。
呼び出し側から見ると、Tupleで渡すときはKeyword無し、Dictionaryで渡すときはKeywordありにする。

def func1(*param1):
    print(param1)
def func2(**param1):
    print(param1)
In [3]: func1(1,2,3,4,5)
(1, 2, 3, 4, 5)

In [4]: func2(a=1,b=2,c=3,d=4,e=5)
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}

Unpacking Argument

tupleの中身をばらばらで渡したい時
func1(*t1)func1(0,1,2)の結果が同じになる。
Dictionaryの場合は**を使う。

In [13]: t1 =  (0,1,2)    

In [14]: func1(*t1)
(0, 1, 2)

In [15]: func1(0,1,2)
(0, 1, 2)

In [16]: func1(t1)
((0, 1, 2),)

詳細はここに書いてある。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away