関数の使い方について

■参考出典
 Pythonで関数を定義・呼び出し(def, return)
 https://note.nkmk.me/python-function-def-return/#return

■関数の基本パターン

def add(a, b):
    x = a + b
    return x

def main():
    a = 1
    b = 2
    c = add(a, b)
    print("計算結果=",c)

if __name__ == '__main__':
    main()


■関数の戻り値について
・returnを省略した関数はNoneを返す。
・returnのあとの値を省略した場合もNoneが返される。
・明示的にreturn Noneと書いても同じ

■関数の引数について
・関数呼び出し時に指定する引数と定義した引数の数が一致しないとエラー(TypeError)。
・関数呼び出し時に引数名=値として値を渡すこともできる。この場合は任意の順番で指定可能。
・すべての引数をキーワードで指定する必要はなく、位置で指定したあとキーワードで指定することもできる。
・関数定義時の引数に/を用いると、/より前の引数が位置専用引数となる。
 ただし、キーワードで指定した以降の引数はすべてキーワードで指定しないとエラー(SyntaxError)となる。
 位置専用引数をキーワードで指定するとエラー(TypeError)となる。/より後ろの引数は位置でもキーワードでも指定可能。
・関数定義時に引数名=デフォルト値とすると引数のデフォルト値を設定できる。
・関数定義時にデフォルト引数を通常の引数(デフォルト値を指定していない引数)の前に置くとエラー(SyntaxError)になる。
・関数定義時に引数名に*をつけると、呼び出し時に指定した複数の引数をタプルとして受け取る。
・関数定義時に引数名に**をつけると、呼び出し時に指定した複数のキーワード引数を辞書として受け取る。
・関数呼び出し時にリストやタプルに*をつけて指定すると、要素が展開(アンパック)され順番に位置引数として指定される。
 要素数と引数の数が一致していないとエラー(TypeError)になる
・関数呼び出し時に辞書に**をつけて指定すると、キーが引数名、値が引数の値として展開されてキーワード引数として指定される。
 引数名と一致するキーが無かったり、一致しないキーがあったりするとエラー(TypeError)になる。