私はpython2からpython3にtestframeworkを転送しています。 私はexec関数の変更にexec文に問題があります。 実行時に関数が呼び出されるxlsファイルによって決まります。 私はlocal()とglobal()を与えようとしましたが、execの代わりにexecHelperを試しました(下記の例を参照)。また、testhelpで直接exechelper関数の名前空間テクニックを試しましたが、常にいくつかの名前は名前空間に見つかりませんでした。 ... 提案はありますか? exec関数のグローバルexec python2 vs python3
def execHelper(command,callerobject):
ns = {}
exec(command,ns)
for name, value in ns.items():
setattr(callerobject, name, value)
def myfunction2(val1,val2):
return val1 * val2
class myclass():
def myfunction1(self,val1,val2):
return val1 + val2
def test(self):
a = 5
self.b = 10
exec("result = self.myfunction1(a,self.b)+myfunction2(a,self.b)")
print(result)
test = myclass()
test.test()
なぜそこにexecが必要ですか? –
問題を表示するのは簡単な例に過ぎませんが、その場合は必要ありません。その例では問題は最も簡単な方法で説明されています – kurtvds
それを使用するのが理にかなっている場合を表示できますか? –