LoginSignup
0
0

More than 3 years have passed since last update.

【Udemy Python3入門+応用】 52. 位置引数のタプル化

Last updated at Posted at 2020-03-10

※この記事は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に入り、
それ以降の引数であるMikeNancy*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を後にすると、エラーとなってしまう。
必ず、普通の引数 → *の順で使うようにしよう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0