Python中的“ @”(@)符号有什么作用?

Python012

Python中的“ @”(@)符号有什么作用?,第1张

【@】符号在python中是装饰器的意思。

装饰器对一个可调用对象(函数、方法、类等等)进行装饰,它返回的也是一个可调用对象。

一般情况下,装饰器是对被装饰对象的修饰与增强。用现实事物类比的话,可以类比为中间商:中间商不生产产品,它将工厂生产的产品进行包装、运输后再销售给顾客。装饰器不实现核心功能,它提供对目标函数调用的封装与强。

它装饰的方法返回值是一个对象(BillList、Bill、List[BillDetail]等),而装饰器【enabled_cache】的作用如它的名称一样:使用缓存。可以看到,这个装饰器函数中定义了一个函数【wrapper】然后将这个wrapper作为返回值。这样,原本调用ProductionBos.bill_with_last_week的代码就不需要做任何改变就能享受到ProductionBos.bill_with_last_week原有的功能(得到一个BillList对象)和enabled_cache提供的附加功能(如果该对象有缓存,就不再从数据库查询)。

修饰符,比如说

class A:

@staticmethod

def m(self):

pass

就相当于

class A:

def m(self):

pass

m = staticmethod(m)

其实就是一调用一个函数参数为下行的变量,并且替换它

扩展资料:

函数修饰符

@用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰,出现在函数定义的前一行,不允许和函数定义在同一行。

一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西。

在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@这样的修饰符的时候会优先解除@后的内容,直接就把@的下一行的函数或者类作为@后边函数的参数,然后将返回值赋给下一个修饰的函数对象。

参考资料来源:百度百科-Python (计算机程序设计语言)

正则表达式是一个特殊的字符序列,可以帮助您使用模式中保留的专门语法来匹配或查找其他字符串或字符串集。 正则表达式在UNIX世界中被广泛使用。

注:很多开发人员觉得正则表达式比较难以理解,主要原因是缺少使用或不愿意在这上面花时间。

re模块在Python中提供对Perl类正则表达式的完全支持。如果在编译或使用正则表达式时发生错误,则re模块会引发异常re.error。

在这篇文章中,将介绍两个重要的功能,用来处理正则表达式。 然而,首先是一件小事:有各种各样的字符,这些字符在正则表达式中使用时会有特殊的意义。 为了在处理正则表达式时避免混淆,我们将使用:r'expression'原始字符串。

匹配单个字符的基本模式

编译标志可以修改正则表达式的某些方面。标志在re模块中有两个名称:一个很长的名称,如IGNORECASE,和一个简短的单字母形式,如。

1.match函数

此函数尝试将RE模式与可选标志的字符串进行匹配。

下面是函数的语法 :

这里是参数的描述 :

pattern : 这是要匹配的正则表达式。

string : 这是字符串,它将被搜索用于匹配字符串开头的模式。 |

flags : 可以使用按位OR(|)指定不同的标志。 这些是修饰符,如下表所列。

re.match函数在成功时返回匹配对象,失败时返回None。使用match(num)或groups()函数匹配对象来获取匹配的表达式。

示例

当执行上述代码时,会产生以下结果 :

2.search函数

此函数尝试将RE模式与可选标志的字符串进行匹配。

下面是这个函数的语法 :

这里是参数的描述 :

pattern : 这是要匹配的正则表达式。

string : 这是字符串,它将被搜索用于匹配字符串开头的模式。 |

flags : 可以使用按位OR(|)指定不同的标志。 这些是修饰符,如下表所列。

re.search函数在成功时返回匹配对象,否则返回None。使用match对象的group(num)或groups()函数来获取匹配的表达式。

示例

当执行上述代码时,会产生以下结果 :

3.匹配与搜索

Python提供基于正则表达式的两种不同的原始操作:match检查仅匹配字符串的开头,而search检查字符串中任何位置的匹配(这是Perl默认情况下的匹配)。

示例

当执行上述代码时,会产生以下结果 :

4.搜索和替换

使用正则表达式re模块中的最重要的之一是sub。

模块

此方法使用repl替换所有出现在RE模式的字符串,替换所有出现,除非提供max。此方法返回修改的字符串。

示例

当执行上述代码时,会产生以下结果 :

5.正则表达式修饰符:选项标志

正则表达式文字可能包含一个可选修饰符,用于控制匹配的各个方面。 修饰符被指定为可选标志。可以使用异或(|)提供多个修饰符,如前所示,可以由以下之一表示 :

6.正则表达模式

除了控制字符(+ ? . * ^ $ ( ) [ ] { } | ),所有字符都与其自身匹配。 可以通过使用反斜杠将其转换为控制字符。

7.正则表达式示例

字符常量

字符类

特殊字符类

重复匹配

非贪婪重复

这匹配最小的重复次数 :

用圆括号分组

反向引用

这与以前匹配的组再次匹配 :

备择方案

python|perl : 匹配“python”或“perl”

rub(y|le) : 匹配 “ruby” 或 “ruble”

Python(!+|?) : “Python”后跟一个或多个! 还是一个?

锚点

这需要指定匹配位置。

带括号的特殊语法

开课吧广场-人才学习交流平台-开课吧