所以基本上,我试图通过 eval() 作弊来模拟。但它似乎在语法上不可行。好奇有没有其他方法?(我很清楚 python 的模拟库,尽管他们使用任何 1-5 行技术来解决这个问题,但请不要建议,这会很棒!)
>>> import os
>>> def func(*args, **kwargs):
... print "Who knows?"
...
>>> to_assign = 'os.getcwd'
>>> os.getcwd
<built-in function getcwd>
>>> eval('os.getcwd')
<built-in function getcwd>
>>> os.getcwd = func
>>> os.getcwd()
Who knows?
>>> eval('os.getcwd') = func
File "<stdin>", line 1
SyntaxError: can't assign to function call
如上所示, os.getcwd 和 eval('os.getcwd') 应该评估相同的东西,但如果 eval 在语句的目标端,我无法进行分配。
另外,我不能使用 exec 因为我在带有闭包的嵌套函数中使用它。
Python 2 的解决方案是更可取的,但如果存在 Python 3 的解决方案也很高兴。
谢谢,陈兹