0

n を指定して、mod n の算術演算を実行するプログラムを作成しようとしています。Python (できれば 2.7) 内に関数を動的に定義して、その動作が呼び出しに使用される名前に依存する方法があるかどうか疑問に思っていました。より具体的には、「*mod」という名前の関数を定義したいと思います。ここで、* は整数で、演算 mod * を実行します。おそらくより明確に、関数 2mod、3mod、4mod などを定義する *mod の関数定義を 1 つ書きたいと思います。これは可能ですか?同様の質問がすでに出されている場合、または私の回答がドキュメントですぐに入手できる場合は、お詫び申し上げます。検索してみましたが、探している機能の説明が正確にわからなかったので、見落としている可能性があります。

ありがとう!

4

4 に答える 4

0

関数を文字列として生成し、execこの文字列を使用して現在の名前空間で関数を取得することで、これを実現できます。何かのようなもの:

n = 2
s = 'def mod%i(x):' % n
s += '    return x %% %i' % n
exec s

これにより、関数が定義されますmod2(x)

于 2013-07-10T08:10:18.090 に答える