関数の作成


    関数の定義

    関数はdefの行から始まり、処理の行はインデント(行頭のスペース)を揃えて行い、そのインデントの終了までが関数定義の範囲。

    def 関数名(引数1, 引数2, …):
      処理
    # インデントの終わりまでが定義の範囲
    # 定義
    def hello(引数):
      print(引数 + "さん、こんにちは")
    
    # 呼び出し
    hello("アリス") # アリスさん、こんにちは

    戻り値の定義 return文

    関数定義の際、return文の後ろに返すオブジェクトを指定する。指定がない場合はNoneが戻る。

    def 倍返し(引数):
      return 引数 * 2
    
    戻り値 = 倍返し(10)
    print(戻り値) # 20

    仮引数のデフォルト値

    仮引数を仮引数名 = オブジェクトのようにして、実引数を省略したときのデフォルト値を指定できる。デフォルト値を持つ仮引数はそうでないものより後半に定義しないと、文法エラー(SyntaxError)。

    def 倍返し(x, y = 2): # (x=2, y)のようにするとエラー(SyntaxError)
      print(x * y)
    
    # 実引数を省略
    倍返し(10) # 20
    # 省略しない例
    倍返し(10, 3) # 30
    
    # エラー(TypeError)
    倍返し(y=3) # TypeError: 倍返し() missing 1 required positional argument: 'x'
    

    上記では、引数1は必須の実引数となり、省略するとエラー(TypeError)。


    可変長引数

    実引数の個数を任意に指定できる可変長引数は、*仮引数名のように定義する。

    def x倍返し(x, *y):
      print(y) # 可変長引数はタプル
      print(x * sum(y)) # すべてのyを合計して、x倍
    
    x倍返し(2, 1, 2, 3) 
    # (1, 2, 3)
    # 12
    

    可変長引数はまとめてタプルとして利用できる。

    キーワード専用引数

    可変長引数より後ろに定義した仮引数は、キーワード専用引数となり、位置引数にはならない(デフォルト値があれば省略可)。

    def x倍返し(*y, x = 2):
      print(x * sum(y)) # すべてのy引数を足して、x倍
    
    x倍返し(1, 2, x = 1) # 3
    x倍返し(1, 2, 3) # 12 
    

    可変長のキーワード引数

    仮引数の最後に**仮引数名の書式で指定すると、可変長のキーワード引数となり、まとめて辞書として利用できる。

    def キーとバリュー(x, **辞書):
      for キー in 辞書: # xは辞書に含まれない
        print(キー, 辞書[キー])
    
    キーとバリュー(x = 1, なまえ = 'alice', 分類 = 'ヒト')
    # なまえ alice
    # 分類 ヒト