※この記事はUdemyの
「現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル」
の講座を受講した上での、自分用の授業ノートです。
講師の酒井潤さんから許可をいただいた上で公開しています。
##■位置引数のタプル化
#####◆例
positional_augment_tuple
def say_something(word1, word2, word3):
print(word1)
print(word2)
print(word3)
say_something('Hi!', 'Mike', 'Nancy')
result
Hi!
Mike
Nancy
もちろんこのように、いちいちword1
,word2
,word3
のように設定してもよいが、
位置引数をタプル化することでうまくやる方法がある。
#####◆位置引数をタプル化する
positional_augment_tuple
def say_something(*args):
print(args)
say_something('Hi!', 'Mike', 'Nancy')
result
('Hi!', 'Mike', 'Nancy')
say_something()
の()
の中に入れる引数の頭に*
をつけることで、
そこに入ってくる引数をタプル化することができる。
これで生成したタプルをさらにforループを回してprintすることで、先程のものを再現できる。
positional_augment_tuple
def say_something(*args):
for arg in args:
print(arg)
say_something('Hi!', 'Mike', 'Nancy')
result
Hi!
Mike
Nancy
#####◆普通の引数と組み合わせる
positional_augment_tuple
def say_something(word, *args):
print('word =', word)
for arg in args:
print('arg =', arg)
say_something('Hi!', 'Mike', 'Nancy')
result
word = Hi!
arg = Mike
arg = Nancy
say_something'に渡す引数として、word
を追加してみた。
すると、最初の引数であるHi!
のみがまずword
に入り、
それ以降の引数であるMike
とNancy
は*args
に入ることがわかる。
#####◆注意点
positional_augment_tuple
def say_something(*args, word):
print('word =', word)
for arg in args:
print('arg =', arg)
say_something('Hi!', 'Mike', 'Nancy')
result
say_something('Hi!', 'Mike', 'Nancy')
TypeError: say_something() missing 1 required keyword-only argument: 'word'
*args
を先に、word
を後にすると、エラーとなってしまう。
必ず、普通の引数 → *
の順で使うようにしよう。