我正在尝试写我的第一个装饰师。我已经看过很多关于它的视频教程和博客文章,但我还没有看到任何关于放置装饰器的位置,以便装饰的功能可以找到它。这看起来很基本,也许它很明显'对于那些以前做过的人,但是因为那不是我,我问。注意我不是在问@decorator放在哪里。我知道在装饰的功能上面就行了。但是装饰器本身必须编写并放在@语法可以找到并应用它的地方。我见过的所有例子都将它们放在同一个文件或脚本中,但我在实际练习中从未见过这样的装饰器,也没有看到将它带入应用程序的import语句。那么它应该在哪里,以及装饰的app / python如何找到它?
答案 0 :(得分:7)
装饰器只是一个可调用的,通常是一个函数。这意味着您可以在任何其他任何功能的位置定义它,并以相同的方式导入它。
from mydecorators import mydecorator
@mydecorator
def f():
...
由于模块级类或函数的装饰在导入时发生,因此必须在使用之前解析名称。这禁止在使用之后定义或导入装饰器,这将像往常一样NameError
例外。
答案 1 :(得分:2)
您可能知道,装饰器只是一个函数,就像任何其他函数一样。所以你放置它就像放置任何其他功能一样
import
函数