0. 結論
f(arg1,arg2)に対しては次のようにするとよい
f(**{"arg1":hoge, "arg2":fuga})
1. やりたいこと
関数f
があり、f
の仮引数はarg1
およびarg2
だとする。
どちらか一方のみを指定して呼ぶ場合、f(arg1="hoge")
とかf(arg2="fuga")
のように呼ぶことが出来る。
このときarg1
を指定するか、それともarg2
を指定して呼ぶかを動的に決定したい。
2. やり方
例えば「arg1
を呼ぶかarg2
を呼ぶかを確率的に決めたい場合」は次のようにできる。
python
import numpy as np
確率的に決まる引数 = lambda: "arg1" if np.random.rand()> 0.5 else "arg2"
def f(arg1="(empty)", arg2="(empty)"):
print("arg1 = "+str(arg1)+"\narg2 = "+str(arg2))
f(**{確率的に決まる引数():"fuga"})
# 半分の確率で
#
# arg1 = fuga
# arg2 = (empty)
#
# と表示され,もう半分の確率で
#
# arg1 = (empty)
# arg2 = fuga
#
# と表示される