python装饰器用@报错

源代码
@fengzhuang
def play_lol():
print("玩LOL")
@fengzhuang
def play_dnf():
print("玩DNF")
def fengzhuang(game):
def inner():
print("打开外挂")
game() #这里需要game加括号,所以在fengzhuang函数引用game时不加括号
print("关闭外挂")
return inner

play_lol = fengzhuang(play_lol)

play_dnf = fengzhuang(play_dnf)

play_lol()
play_dnf()

run:
C:\Users\11869\AppData\Local\Programs\Python\Python310\python.exe C:/Users/11869/first/oneday/second.py
Traceback (most recent call last):
File "C:\Users\11869\first\oneday\second.py", line 4, in
@fengzhuang
NameError: name 'fengzhuang' is not defined

Process finished with exit code 1
这是啥情况

def fengzhuang(game):
def inner():
print("打开外挂")
game() #这里需要game加括号,所以在fengzhuang函数引用game时不加括号

放到最上面去