3

Pythonでは、同じ入力引数 sampleAとで非常によく似た多くの関数を呼び出す必要がありsampleBます。唯一のことは、これらの関数のいくつかはオプションを設定する必要があり、いくつかはそうではないということです。例えば:

import scipy.stats
scipy.stats.mannwhitneyu(sampleA, sampleB)
[...some actions...]
scipy.stats.mstats.ks_twosamp(sampleA, sampleB, alternative='greater')
[...same actions as above...]
scipy.stats.mstats.mannwhitneyu(sampleA, sampleB, use_continuity=True)
[...same actions as above...]

したがって、より一般的な関数の入力引数や、などの関数の名前を渡したいのですが、時々computeStats使用しなければならないオプションの処理方法がわかりません。sampleAsampleB

def computeStats(functionName, sampleA, sampleB, options???):
   functionName(sampleA, sampleB)  #and options set when necessary
   ...some actions...
   return testStatistic

設定する必要がある場合と設定しない場合があるオプションを指定するにはどうすればよいですか?

4

1 に答える 1

4

使用**kwargs

def computeStats(func, sampleA, sampleB, **kwargs):
   func(sampleA, sampleB, **kwargs)
   ...some actions...
   return testStatistic

そうすれば、次のように使用できるようになりますcomputeStats()

computeStats(scipy.stats.mstats.ks_twosamp, sampleA, sampleB, alternative='greater')

とはいえ、私はあなたがこれを必要としていると完全に確信しているわけではありません。単純にどうですか

def postprocessStats(testStatistic):
   ...some actions...
   return testStatistic

postprocessStats(scipy.stats.mstats.ks_twosamp(sampleA, sampleB, alternative='greater'))

これは読みやすく、同時により一般的だと思います。

于 2013-03-27T08:24:16.987 に答える