コアアプリケーションがPython 2.6からPython 2.7に変更され、後のリリースでPython 3に変更される可能性があります。floatを受け入れるためにrange()関数をPython 2.7から拡張/オーバーロードするには?
PythonのRange関数が変更されました(Python 2.7のchangelogからの引用)。
range()
関数は、その引数をより一貫して処理します。 はfloat型ではなく__int__()
を呼び出します。
さらに処理する結果に基づいて、ユーザーが式/ Pythonコードを追加できるようにしました。
range
の機能を変更するにはどうすればよいですか?それらの中にはfloat
引数を使っていて、Python 2.7で失敗しているものもあります。
コードはユーザーによって書き込まれているため、Pythonコード/式では変更できません。 1000sのファイルがあります。一部のユーザーは、独自のファイルを持つことがあります。
は、それがフロートの引数を取るようパイソンから
range()
機能を拡張する方法は、ありますか?もう1つの方法は、Pythonコードを解析して
float
をint
に変更することです。それは多くの刺す操作を必要とし、いくつかのrange
呼出しがパラメータとして式を有するので、非常に時間がかかる。
私たちのアプリケーションは、C++で構築し、我々はあなたが深刻な移行の問題を持っているC++、PythonのAPIS
floatを受け入れるためにmonkey-patch 'range'を使うことができますが、それはあなたがどのようにユーザコードを呼び出すかによって異なります。詳細を教えていただけますか? –
C++のpythonコードはpstr = PyEval_EvalCode((PyCodeObject *)cs、pdict、pdict)を使用して評価されました。 – Sandip
Python 2.5でもfloat argsを 'range'に渡すと、' DeprecationWarning:integer argument expected、 'float'が得られます。おそらく、この警告を無視してはいけません。 –