name
変数を設定するメソッドがありますがglobal name
、その最初の行にはありません。ローカルname
変数を使用するため、グローバル変数は変更されませんname
。set_name
global を強制的に使用するように装飾する方法はありますname
か?
name = "John"
def set_name():
name = "Sara"
def print_name():
global name
print(name)
def decorator(func):
def wrapper(*args, **kwargs):
## Problem:
# Force set_name to use global 'name'
func(*args, **kwargs)
return wrapper
print_name()
#Output: John
decorator(set_name)()
print_name()
# Prints John, but I want to prints Sara