Python 入門 ノート (41)位置引数のタプル化

位置引数のタプル化

次のような一つの引数のみ出力する簡単な関数があります。

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

コメント