擅长:python、mysql、java
<p>您可以访问调用方堆栈并查看其帧中的所有局部变量。我正使用这种技术来实现我的<a href="https://code.activestate.com/recipes/578147-stack-environment/?in=user-4182236" rel="nofollow noreferrer" title="Stack Environment">Stack Environment in Python</a>,它或多或少地做到了这一点,顺便说一句,使用它,可能会以更整洁的方式解决整个问题。在</p>
<p>但是,除非你把这个放在一个漂亮的藏书室里,把所有丑陋的细节都藏起来,否则我会称之为一个丑陋的黑客攻击。在</p>
<p>把这个上下文传递到<code>call_me()</code>怎么样?然后它的装饰者当然会收到它。在</p>
<p>如果您选择使用StackEnv,这将是一种公式化方法:</p>
<pre><code>from stackEnv import stackEnv
def decme(function):
def wrapper(*args, **kwargs):
if stackEnv.context.someValue > someOtherValue:
doSomething()
return function(*args, **kwargs)
return wrapper
@decme
def call_me():
...
def caller_function():
stackEnv.context = context_creator()
call_me()
</code></pre>