a

ユーザー定義関数

ユーザー定義関数

関数は、呼び出し元より上に記述する


基本構文

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

print(sum(2, 3))
# 5

初期値のある引数

def sum(a, b = 10) :  # 初期値は後方から必須
    x = a + b
    return x

print(sum(2))  # 位置引数で渡す
# 12
print(sum(2, 100))
# 102

初期値のある関数にキーワード引数で値を渡す

def sum(first = 10, second = 5) :  # 初期値は後方から必須
    x = first + second
    return x

print(sum())  # 引数の省略
# 15
print(sum(second = 1))  # 第二引数のみキーワードで渡す
# 11
print(sum(first=2))
# 7

引数の数を固定しない : *args

  • *argsと書くのは慣例
def letters(*args) :  # タプルで受け取る
    print(args)

letters("apple", "cherry", "pine", "banana")
# ('apple', 'cherry', 'pine', 'banana')
  • 必須の固定引数と数を固定しない引数
def letters2(start, end, *args) :  # タプルで受け取る
    print(f"{start},---")
    for t in args:
        print(f"args:{t}")
    print(f"---{end}")

letters2("初めて", "終わり", "cherry", "pine", "banana")
# 初めて,---
# args:cherry
# args:pine
# args:banana
# ---終わり

キーワード引数を辞書で受取る : **kwargs

def fruit(**kwarfs):
    print(kwarfs)

fruit(apple = 2, orange = 3, banana = 1)  # キーワードでの辞書
# {'apple': 2, 'orange': 3, 'banana': 1}

他のPythonファイルを読み込む (stdin利用)

  • 自前のファイル(値の平均を返す)
def average_calc(*args):  # tupleで可変長を受ける
    if args:  # argsが空でない
        l = [int(n) for n in args[0]]  # stdinは文字列の為、変換
        av = sum(l) / len(l)
        
        return av

    else:
        pass  # TODO passは慣例
        return None
import average  # 自前のファイル
import sys

a = average.average_calc(sys.argv[1:])  # コマンドラインから引数を受ける(リスト:スライス)
print(a)
$ python test_def2.py 10 20  # スペースで引数を渡す
# 15  # 結果