2024-04-23 12:02:59 发布
网友
假设由于管理原因,我没有对模块xxx的写访问权。你知道吗
我想做一些类似的事情:
from xxx import yyy @myDeco yyy
当然失败了。你知道吗
我想我能做到
yyy = myDeco(yyy)
但是有没有办法使用@myDeco符号呢?或者只有在def之前才允许这样做?你知道吗
@myDeco
def
在Python参考文档Compound Statements部分中,它说:
decorated ::= decorators (classdef | funcdef) decorators ::= decorator+ decorator ::= "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE funcdef ::= "def" funcname "(" [parameter_list] ")" ":" suite
这是语法规则的一部分。如您所见,decorator只在函数或类定义之前应用,这是def <funcname>启动的。继续说,注意:
def <funcname>
A function definition may be wrapped by one or more decorator expressions. Decorator expressions are evaluated when the function is defined, in the scope that contains the function definition.
也就是说,请记住,装饰符实际上只是语法上的糖分,在它们可用之前:
func = decorate_func(func)
而是用了。因此,如果您所拥有的只是某个变量中的函数对象,那么就不能使用decorator语法糖,必须还原到第二个方法。你知道吗
@语法只允许在def或class之前使用。你知道吗
@
class
在Python参考文档Compound Statements部分中,它说:
这是语法规则的一部分。如您所见,decorator只在函数或类定义之前应用,这是
def <funcname>
启动的。继续说,注意:也就是说,请记住,装饰符实际上只是语法上的糖分,在它们可用之前:
而是用了。因此,如果您所拥有的只是某个变量中的函数对象,那么就不能使用decorator语法糖,必须还原到第二个方法。你知道吗
@
语法只允许在def
或class
之前使用。你知道吗相关问题 更多 >
编程相关推荐