在你写完背后,你在哪里装饰一个装饰品?

时间:2018-05-07 20:09:35

标签: python decorator python-decorators

我正在尝试写我的第一个装饰师。我已经看过很多关于它的视频教程和博客文章,但我还没有看到任何关于放置装饰器的位置,以便装饰的功能可以找到它。这看起来很基本,也许它很明显'对于那些以前做过的人,但是因为那不是我,我问。注意我不是在问@decorator放在哪里。我知道在装饰的功能上面就行了。但是装饰器本身必须编写并放在@语法可以找到并应用它的地方。我见过的所有例子都将它们放在同一个文件或脚本中,但我在实际练习中从未见过这样的装饰器,也没有看到将它带入应用程序的import语句。那么它应该在哪里,以及装饰的app / python如何找到它?

2 个答案:

答案 0 :(得分:7)

装饰器只是一个可调用的,通常是一个函数。这意味着您可以在任何其他任何功能的位置定义它,并以相同的方式导入它。

from mydecorators import mydecorator

@mydecorator
def f():
    ...

由于模块级类或函数的装饰在导入时发生,因此必须在使用之前解析名称。这禁止在使用之后定义或导入装饰器,这将像往常一样NameError例外。

答案 1 :(得分:2)

您可能知道,装饰器只是一个函数,就像任何其他函数一样。所以你放置它就像放置任何其他功能一样

  1. 在同一档案中
  2. 在另一个文件中。在这种情况下,您还需要import函数