Python可変パラメータ関数の実現

1010 ワード

C言語と同様にPythonにも可変パラメータ関数があり、1つの関数が複数のパラメータを受信できるが、これらのパラメータの個数は関数呼び出し前には事前に知られていない.
Cの最も典型的な例はprintf関数であり,pythonでも可変パラメータを用いることでprintf()を容易に実現できる.
コードは次のとおりです.
def printf(fmt, *arg):
    print fmt % arg

printf定義の*argは可変パラメータであり、そのタイプはtupleであり、fmtパラメータを除くすべての入力パラメータを表す.
しかし、私たちが入力した可変パラメータが辞書であれば、*argの定義は十分ではありません.この場合、*argを使用して関数を定義する必要があります.
このとき、関数を呼び出す方法は次のようになります.
定義:def fun(**arg)
fun(key1 = val1, key2=val2, ...)
例えばfun(One=1,Two=2)
コードは次のとおりです.
def testFun1(**arg):
    for k in arg.keys():
        printf("arg[%s] = %s.", k, arg[k])

def testFun2(*arg1, **arg2):
    print arg1
    print arg2

if __name__ == '__main__':
    printf("How do you do? %d, %d", 2, 3) 
    testFun1(One=1, Two=2)
    testFun2(1, 2, 3, One=1, Two=2, Three=3)

出力結果:
How do you do? 2, 3 arg[Two] = 2. arg[One] = 1. (1, 2, 3) {'Three': 3, 'Two': 2, 'One': 1}