Python入門トップページ


目次

  1. プログラミング言語
  2. Anaconda - Jupyter Notebook / JupyterLab の環境設定
  3. Python の基礎
  4. リスト,タプル,辞書,集合
  5. 再び Jupyter Notebook の操作
  6. Python の制御構文
  7. 関数
    1. 関数の定義と呼び出し
    2. 引数の指定
    3. 値を返す
    4. 変数のスコープ
    5. 引数のデフォルト値
    6. 可変個の引数
  8. 便利な関数など
  9. リストの内包表記
  10. 多次元リスト
  11. クラス
  12. 演習問題
  13. 雑多な情報

Python の基礎

関数

可変個の引数

Pythonでは関数の引数に *** を指定すると可変個の引数を扱うことができます.具体的には関数定義時の引数を *args と記述すると,関数内部では args というタプルに位置引数がまとめられます.また関数定義時の引数を **kwargs とすると,関数内部では kwargs という辞書にキーワード引数がまとめられます.なお,必ずしも argskwargs という名前でなくても構いませんが,慣習的にそれらの名前が使われます.

*args

可変個の位置引数を使った関数 greetings を定義して呼び出してみます.関数の呼び出しでは3つの引数が指定されていますが,2個目と3個目の 'Tony''Bob'args タプルにまとめられていることが分かります.

def greetings(msg, *args):
    print(msg)
    print(args)
    print(type(args))

greetings('Hello', 'Tony', 'Bob')
Hello
('Tony', 'Bob')
<class 'tuple'>

'Tony''Bob' への挨拶文を作成してみます.

def greetings(msg, *args):
    for name in args:
        print(f'{msg}, {name}!')

greetings('Hello', 'Tony', 'Bob')
Hello, Tony!
Hello, Bob!

'Alice' も加えて3人への挨拶文を作成します.

greetings('Hello', 'Tony', 'Bob', 'Alice')
Hello, Tony!
Hello, Bob!
Hello, Alice!

**kwargs

可変個のキーワード引数を利用したい場合には **kwargs を利用します.kwargs が辞書型であることが分かります.

def signature(name, **kwargs):
    print(name)
    print(kwargs)
    print(type(kwargs))

signature('Bob', street='Minato', city='Kobe')
Bob
{'street': 'Minato', 'city': 'Kobe'}
<class 'dict'>

手紙の署名を出力するような関数に変更してみましょう.

def signature(name, **kwargs):
    print(name)
    for key, value in kwargs.items():
        print(f'{value} {key},', end=' ')
    print('')

signature('Bob', street='Minato', city='Kobe', prefecture='Hyogo')
Bob
Minato street, Kobe city, Hyogo prefecture,

目次に戻る