В приведенном ниже скрипте я хотел бы использовать глобальную переменную name_type
в decorator
при вызове функций get_names
. Пожалуйста, не беспокойтесь о логике программы.
name_type=None
def main():
global name_type
name_type="FEMALE"
get_names()
def superNameDecorator(value):
def nameDecorator(func):
if value in ["MALE"]:
def wrapper1(*args,**kwargs):
original_result=func(*args,**kwargs)
modified_result= "<MALE>"+original_result + "<\MALE>"
return modified_result
return wrapper1
elif value in ["FEMALE"]:
def wrapper2(*args,**kwargs):
original_result=func(*args,**kwargs)
modified_result= "<FEMALE>"+original_result + "<\FEMALE>"
return modified_result
return wrapper2
return nameDecorator
@superNameDecorator(name_type)
def get_names():
name='AMY'
return name
if __name__ == "__main__":
main()
Это прекрасно работает, когда я передаю прямую строку либо "MALE" / "FEMALE", но выдает ошибку ниже при передаче name_type
Что мне здесь не хватает?
Traceback (most recent call last):
File "GlobalTesting.py", line 29, in <module>
main()
File "GlobalTesting.py", line 5, in main
get_names()
TypeError: 'NoneType' object is not callable