4

次のような文字列があります。

str = "pwd.getpwuid(1000)"

ここで、eval() を実行しようとすると、まだ pwd をインポートしていないため例外が発生する可能性があります (または、持っている場合はそうでない可能性があります)。

そこで、文字列を "." で分割するパーサーを作成することにしました。そしてリストを取得します:

lis = ["pwd", "getpwuid(1000)"]

それがlis[0]含まれていない場合、"("または")"私が呼び出す場合は、

importlib.import_module(lis[0])

そして再び評価。

同じものをより良くすることはできますか?

4

2 に答える 2

0

lis[2] の関数の位置引数と lis[3] の名前付き引数をいくつかの正規表現で分割して実行するのはどうですか

lib = importlib.import_module(lis[0])
lib.__dict__[lis[1]](*list[2],**list[3])
于 2014-04-03T13:46:54.820 に答える