位置引数のタプル化
次のような一つの引数のみ出力する簡単な関数があります。
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
コメント