のスコープ内の変数を変更することができます。あなたは以下のデコレータの例を見てみましょう飾ら機能
import functools
def my_decorator(func):
my_var = 1
@functools.wraps(func)
def wrapper(*args, **kwargs):
print my_var
return func(*args, **kwargs)
return wrapper
@my_decorator
def my_func(s):
print s
はグローバルスコープでmy_var
にアクセスして変更する方法はありますか?
私はmy_var
への参照が表示されていない、まだ私はそれはそれはprint my_var
を呼び出すようmy_func
でアクセスできるように持っていることを知っているglobals()[ 'my_func' ]
を使用して、ラップされた機能の中に探しています。
さらに、装飾された機能ごとにmy_var
という単一インスタンスが必要です。
いいえ、簡単に。そして、どんな試みも壊れやすく、読むのが難しいです。 – jszakmeister
「非ローカルmy_var」を意味しますか?これはPython 2または3ですか? – Ryan
@RyanこれはPython 2.7です。 – JDN