|
|
1
335
安
您将遇到的最常见的Python装饰器有:
如果你看到
|
|
|
2
362
例子
第一次看见瓶 介绍 从一开始,格式如下:
意识到这一点,我终于可以安心地和小酒瓶在一起了。 |
|
3
196
此代码段:
相当于此代码:
在decorator的定义中,可以添加一些函数通常不会返回的修改内容。 |
|
4
167
这是矩阵乘法的一个简单实现。
|
|
5
115
at(@)符号在Python中有什么作用?简言之,它用于装饰语法和矩阵乘法。 在decorators上下文中,以下语法:
相当于:
和
相当于
哪里
你怎么能自己发现这个?
我们可以看到
修饰符语法:google搜索“decoratorpython docs”得到的最热门结果之一是“python语言参考”的“复合语句”部分 section on function definitions ,我们可以通过搜索单词“decorator”找到它,我们看到。。。有很多书要读。但话说回来, "decorator" is a link to the glossary ,它告诉我们:
所以,我们看到了
它们并不完全相同,因为Python在bar之前用decorator计算foo表达式(可以是点式查找和函数调用)(
(如果这种差异使你的代码的意义发生了变化,你应该重新考虑你的生活,因为那将是病态的。) 堆叠装饰工
这是一个演示,我们可以首先调用一个函数作为装饰器,以及堆栈装饰器。在Python中,函数是第一类对象,这意味着您可以将函数作为参数传递给另一个函数,然后返回函数。这两件事都是装修工做的。
关于总结的用法
接线员,
在语言参考的词汇分析部分,我们有一个
section on operators
,包括
在下一页的数据模型中,我们有 Emulating Numeric Types ,
我们看到了
(所以现在我们知道了
虽然此运算符可以重载以执行几乎任何操作,但在
就地矩阵乘法:
|
|
6
41
@symbol是python提供的一种语法糖
简单点说
这里有个简单的例子,
你看,我忘了加名字了。
然而,如果我不被允许操作原始函数,或者如果有数千个这样的函数要处理呢。 用不同的思维来解决问题,并定义一个新的函数
泰达,你看,我修正了
怎么回事
|
|
|
7
17
Numpy公司
那么,图书馆
|
|
|
8
8
从Python3.5开始,“@”被用作矩阵乘法的专用中缀符号(PEP 0465—请参阅 https://www.python.org/dev/peps/pep-0465/ |
|
|
9
8
在Python中添加了装饰器 功能与方法包装 (接收函数并返回增强的函数)更易于阅读和理解。最初的用例是能够将方法定义为类方法或定义头部的静态方法。如果没有decorator语法,它将需要一个相当稀疏和重复的定义:
如果decorator语法用于相同的目的,则代码会更短,更易于理解:
一般语法和可能的实现 不允许使用lambda表达式 )它在调用时接受单个参数(它将是修饰函数),并返回另一个可调用对象。”这里用的是“可调用”而不是有预谋的“功能”。虽然decorator经常在方法和函数的范围内讨论,但它们并不局限于它们。事实上,任何可调用的对象(任何实现了call泳uMethod的对象都被认为是可调用的)都可以用作装饰器,并且它们返回的对象通常不是简单的函数,而是实现它们自己的call泳方法的更复杂类的更多实例。 decorator语法只是 句法上的甜点 . 请考虑以下装饰器用法:
或始终可以被显式的或调用替换为:
但是,如果在一个函数上使用多个decorator,后者的可读性较差,也很难理解。 装饰器可以多种不同的方式使用,如下所示:
有很多方法可以编写自定义修饰符,但最简单的方法是编写一个函数,该函数返回一个子函数来包装原始函数调用。 一般模式如下:
作为一个班级 虽然decorator几乎总是可以使用函数实现的,但是在某些情况下,使用用户定义的类是一个更好的选择。当decorator需要复杂的参数化或它依赖于特定的状态时,这通常是正确的。 非参数化装饰器作为类的泛型模式如下:
参数化装饰器
这样定义的decorator可以接受参数:
请注意,即使参数化装饰器的参数有默认值,它的名称后面的括号也是必需的。将前面的decorator与默认参数一起使用的正确方法如下:
最后让我们看看具有属性的装饰器。 属性 属性提供了一个内置的 descriptor 知道如何将属性链接到一组方法的类型。属性接受四个可选参数:fget、fset、fdel和doc。最后一个可以用来定义一个docstring,它链接到属性,就好像它是一个方法一样。下面是一个矩形类的示例,该类可以通过直接访问存储两个角点的属性或使用宽度和高度属性进行控制:
创建属性的最佳语法是将property用作装饰器。这个遗嘱 减少方法签名的数量 课堂内部 让代码更丰富 可读性和可维护性 . 对于decorators,上面的类变成:
|
|
|
10
2
它表示您正在使用装饰器。给你 Bruce Eckel's example 从2008年开始。 |
|
|
11
2
在Python中,它就像:
这可以用于各种有用的东西,因为函数是对象,只是必要的指令。 |
|
|
12
2
@symbol还用于访问plydata/pandas数据帧查询中的变量,
|