1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonにおける可変長引数の関数

Last updated at Posted at 2017-11-12

基本的なことだけど、忘れてきたので備忘録
任意の数の引数を取る関数は2つの方法で実現可能。

##シーケンス型
仮引数の前に*をつけることで、複数引数を一つのタプルとして扱う方法。

test.py
def test(*foo):
    print "Hello " + " and ".join(foo)

test("Jim", "Hiroshi")

実行結果
Hello Jim and Hiroshi

つまりは「可変長引数は関数の仮引数群の中で1個だけ」かつ「仮引数群の最後に位置しなければならない。」ということがわかる。

##辞書型
仮引数の前に**をつけることで、複数引数を一つの辞書として扱う方法。
こっちのやり方は直感的だけど、実引数としてキーワード付き引数を使わなければならない。

test2.py
def test(**foo):
    print "Hello " + foo.get("name1") + " "  + foo.get("name2")

test(name1 = "Jim", name2 = "Hiroshi")

実行結果
Hello Jim and Hiroshi


ちなみに可変長仮引数はfooFunc(*foo2,*foo)、fooFunc(**foo2,**foo)、fooFunc(*foo,foo2)、fooFunc(**foo,foo2)はSyntaxErrorなので注意。
fooFunc(foo2,*foo)、fooFunc(foo2,**foo)、fooFunc(*foo2,**foo)は問題ない。

1
7
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
1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?