2012-02-24 10 views
2

私はPython 3に移植している既存のコードをいくつか持っています。このコードは、Pythonコードオブジェクトと新しいモジュールを使ってデフォルト引数のリストからPython関数オブジェクトを次のように構築します。new.function replacement for Python 3

この
my_function = new.function(code_object, globals(), None, default_values); 

結果は、私が大手を振って呼び出すことができる新機能です:「新しい」モジュールは廃止されているので

fn_result = my_function(my_args, **my_keyargs); 

、私はのpython3でそれを使用することはできません。また、私はPythonコードの外にコードオブジェクトを格納しているので、コードオブジェクトで始まるソリューションが必要です(理由の長い説明)。

答えて

2

newモジュールofficial documentationに記載されているように、代わりにtypes.FunctionTypeを使用します。これはPython 2でも同様に動作します。

+0

返信いただきありがとうございます。私はtypes.FunctionTypeを指摘した新しいモジュールのドキュメントを読んだ。私が理解していないのは、この名前を使用してコードオブジェクトを使用する関数インスタンスを作成する方法です。例が非常に役立つでしょう。 – skremer

+0

進捗状況:types.FunctionTypeは単なる名前ではなく、新しい関数インスタンスを作成するために使用できるコンストラクタを持つ 'function'クラスへの参照(?)です。しかし、そのコンストラクタのドキュメントはどこにありますか? – skremer

+1

@ user1231679: 'new.py'のソースコードを見てください:' from types import FunctionType as function'。これはまったく同じことです。単に 'new.function'ではなく' types.FunctionType'です。 –