位置引数のタプル化
次のような一つの引数のみ出力する簡単な関数があります。
def say_something(word):
    print(word)
say_something('Hi!')
Hi!
引数の数を増やすと、次のようになります。
def say_something(word, word2, word3):
    print(word)
    print(word2)
    print(word3)
say_something('Hi!', 'Mike', 'Nancy')
Hi!
Mike
Nancy
*アスタリスク
pythonではこれらをまとめて簡単に表現できます。
引数の変数の前に*(アスタリスク)を付けます。
def say_something(*args):
    print(args)
say_something('Hi!', 'Mike', 'Nancy')
(‘Hi!’, ‘Mike’, ‘Nancy’)
すると、複数の引数をまとめてタプルに入れてくれます。
for loop
そのタプルを for loop してみます。
def say_something(*args):
    for arg in args:
        print(arg)
say_something('Hi!', 'Mike', 'Nancy')
Hi!
Mike
Nancy
位置引数
これを、位置引数と混ぜて使ってみます。
def say_something(word, *args):
    print('word =', word)
    for arg in args:
        print(arg)
say_something('Hi!', 'Mike', 'Nancy')
word = Hi!
Mike
Nancy
1番目の Hi! は word に入り、のこりはタプル *args に入ってくれます。
*args には数を増やしても問題ありません。
参考
参考:以下ではタプルをアンパッキングして 引数 *args にタプル化して入れている。
def say_something(word, *args):
    print('word =', word)
    for arg in args:
        print(arg)
t = ('Mike', 'Nancy')
say_something('Hi!', *t)
word = Hi!
Mike
Nancy

 
  
  
  
  
コメント