草庐IT

Decorator

全部标签

python - 如何使用装饰器将变量注入(inject)范围?

[免责声明:可能有更多的pythonic方式来做我想做的事,但我想知道python的作用域是如何在这里工作的]我正在尝试找到一种方法来制作一个装饰器,该装饰器可以将名称注入(inject)另一个函数的范围(这样名称不会泄漏到装饰器的范围之外)。例如,如果我有一个函数说要打印一个尚未定义的名为var的变量,我想在调用它的装饰器中定义它。这是一个打破的例子:c='Message'defdecorator_factory(value):defmsg_decorator(f):definner_dec(*args,**kwargs):var=valueres=f(*args,**kwargs)

python - 如何使用装饰器将变量注入(inject)范围?

[免责声明:可能有更多的pythonic方式来做我想做的事,但我想知道python的作用域是如何在这里工作的]我正在尝试找到一种方法来制作一个装饰器,该装饰器可以将名称注入(inject)另一个函数的范围(这样名称不会泄漏到装饰器的范围之外)。例如,如果我有一个函数说要打印一个尚未定义的名为var的变量,我想在调用它的装饰器中定义它。这是一个打破的例子:c='Message'defdecorator_factory(value):defmsg_decorator(f):definner_dec(*args,**kwargs):var=valueres=f(*args,**kwargs)

python - 在 Python 中充当装饰器和上下文管理器的函数?

这可能有点太过分了,但主要是出于好奇..是否有可能有一个可调用的对象(函数/类)同时充当上下文管理器和装饰器:defxxx(*args,**kw):#orasaclass@xxx(foo,bar)defim_decorated(a,b):print('dothestuff')withxxx(foo,bar):print('dothestuff') 最佳答案 从Python3.2开始,对此的支持甚至包含在标准库中。派生自类contextlib.ContextDecorator可以轻松编写可以用作装饰器或上下文管理器的类。这个功能可以很

python - 在 Python 中充当装饰器和上下文管理器的函数?

这可能有点太过分了,但主要是出于好奇..是否有可能有一个可调用的对象(函数/类)同时充当上下文管理器和装饰器:defxxx(*args,**kw):#orasaclass@xxx(foo,bar)defim_decorated(a,b):print('dothestuff')withxxx(foo,bar):print('dothestuff') 最佳答案 从Python3.2开始,对此的支持甚至包含在标准库中。派生自类contextlib.ContextDecorator可以轻松编写可以用作装饰器或上下文管理器的类。这个功能可以很

Python 装饰器处理文档字符串

我在使用带有装饰器的文档字符串时遇到问题。举个例子:defdecorator(f):def_decorator():print'decoratoractive'f()return_decorator@decoratordeffoo():'''themagicfoofunction'''print'thisisfunctionfoo'help(foo)现在帮助没有按预期向我显示foo的文档字符串,它显示:Helponfunction_decoratorinmodule__main__:_decorator()没有装饰器,帮助是正确的:Helponfunctionfooinmodule__

Python 装饰器处理文档字符串

我在使用带有装饰器的文档字符串时遇到问题。举个例子:defdecorator(f):def_decorator():print'decoratoractive'f()return_decorator@decoratordeffoo():'''themagicfoofunction'''print'thisisfunctionfoo'help(foo)现在帮助没有按预期向我显示foo的文档字符串,它显示:Helponfunction_decoratorinmodule__main__:_decorator()没有装饰器,帮助是正确的:Helponfunctionfooinmodule__

python - 如何在 django 中编写自定义装饰器?

问题-@is_premium_userdefsample_view:.............我希望只有网站的高级用户才能访问某些View。以及如何在我的项目中的各种应用程序中使用这个装饰器? 最佳答案 玩弄了上面的各种链接,但无法让它们工作,然后遇到了我改编的这个非常简单的链接。http://code.activestate.com/recipes/498217-custom-django-login_required-decorator/fromfunctoolsimportwrapsfromdjango.httpimportH

python - 如何在 django 中编写自定义装饰器?

问题-@is_premium_userdefsample_view:.............我希望只有网站的高级用户才能访问某些View。以及如何在我的项目中的各种应用程序中使用这个装饰器? 最佳答案 玩弄了上面的各种链接,但无法让它们工作,然后遇到了我改编的这个非常简单的链接。http://code.activestate.com/recipes/498217-custom-django-login_required-decorator/fromfunctoolsimportwrapsfromdjango.httpimportH

python - 如何从 Python 中的函数中去除装饰器

假设我有以下内容:defwith_connection(f):defdecorated(*args,**kwargs):f(get_connection(...),*args,**kwargs)returndecorated@with_connectiondefspam(connection):#Dosomething我想测试spam功能,而无需经历设置连接(或装饰器正在做的任何事情)的麻烦。给定spam,我如何从中剥离装饰器并获得底层的“未装饰”功能? 最佳答案 这个问题有一些更新。如果您使用的是Python3,并且@functo

python - 如何从 Python 中的函数中去除装饰器

假设我有以下内容:defwith_connection(f):defdecorated(*args,**kwargs):f(get_connection(...),*args,**kwargs)returndecorated@with_connectiondefspam(connection):#Dosomething我想测试spam功能,而无需经历设置连接(或装饰器正在做的任何事情)的麻烦。给定spam,我如何从中剥离装饰器并获得底层的“未装饰”功能? 最佳答案 这个问题有一些更新。如果您使用的是Python3,并且@functo