Python小推车Diango

核心知识梳理(四)

2019-03-29  本文已影响5人  暖A暖

Day28:正则表达式

1.match函数用于检测字符串开头位置是否匹配,匹配成功返回一个匹配的对,否则返回None,
  它的语法为re.match(pattern, string, flags=0),pattern表示匹配的正则表达式,
  string表示要匹配的字符串,flags用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等

2.search函数用于扫描整个字符串并返回第一个成功的匹配,
  它的语法为re.search(pattern, string, flags=0),它的参数和match函数的一样,不同在于re.match只匹配字符串的开始,
  如果字符串的开始不匹配则直接返回None;而re.search则匹配整个字符串,直到找到一个匹配的

3.sub函数用于替换字符串中的匹配项,
  语法为re.sub(pattern, repl, string, count=0, flags=0),repl 表示替换的字符串,
  也可为一个函数,string 表示 要被查找替换的原始字符串,count表示模式匹配后替换的最大次数,
  默认 0 表示替换所有的匹配

4.compile函数用于编译正则表达式,生成一个正则表达式对象,
  供 match() 和 search() 这两个函数使用,语法为re.compile(pattern[, flags]),
  pattern表示一个字符串形式的正则表达式,flags可选表示匹配模式,比如忽略大小写,多行模式等
.表示匹配除了换行的任意字符
^匹配字符串的开头
$匹配字符串的末尾
*重复匹配0到任意次
+匹配1到任意次
?重复匹配0次或1次
{m}匹配n次
{m, n}匹配m 到 n 次等
这些特殊字符有很多,慢慢用熟练了就容易记住了

Day29:面向对象(一)

class 类的名称:
  语句块
1.实例方法是在类中定义的方法,并且方法的第一个参数一般是self,
  指向对象本身,使用的时候只能通过实例化的对象调用,对象名称.方法名

2.静态方法也是定义在类中,不同的是在类中定义静态方法时要在方法前加注解
  @staticmethod,静态方法可以被实例对象和类对象调用

3.类方法同样是定义在类中,定义类方法时要在方法前加注解@classmethod,
  方法中的第一个参数为类本身,约定写成cls,类方法可以被实例对象和类对象调用
1.在类中定义的,所属这个类的所有对象都可以访问的属性,叫做公有属性

2.两个下划线开头的属性表示私有属性,私有属性不能在类的外部被使用或直接访问,
  在类的内部方法的使用为self.__private_attrs

3.一个下划线开头的属性为保护属性,只有类实例和子类实例能访问,
  需通过类提供的接口进行访问

Day30:面向对象(二)

比如此时有两个类, 一个是Animal类、一个是Person类,
Person类继承Animal类中的方法和属性,那就是说Animal类是父类(基类),Person类是子类(派生类)

class Animal:    
  def __init__(self):      
   self.type = 'animal'  

  def play(self):        
    print('play')class

Person(Animal):    
  def talk(self):        
    print('talk')

person = Person()
person.play() # 子类可以调用父类的方法
print(person.type) # 子类可以调用父类的属性
在Mixin类中,不能写初始化的__init__方法,因为Mixin类不做为独立类使用,
因为Mixin类原则上必须作为其他类的基类,实现其他类的功能增强

Mixin类的基类必须也是Mixin类,使用Mixin方式增强功能的的类,
必须将Mixin类写在继承列表的第一个位置

Day31:魔术方法

init()方法是一个初始化方法,在一个实例被创建之后调用

new()方法用于创建类并返回这个类的实例,总是在初始化方法被执行前执行

del()相当于C++的析构函数,在对象要被销毁前执行

repr()用来自定义对象的输出模式

iter()、next()通常是成对出现的,用来创建用户自定义的迭代器

call()方法允许一个类的实例像函数一样被调用如:x(a, b)调用为 x.call(a, b)

add()、sub()、mul()、truediv()等方法是运算符相关的魔术方法,实现了加减乘除等运算

Day32:上下文管理器

with语法为:with 表达式 [as 目标]:代码块

__enter__(self)在 进入上下文管理器时调用,其返回值将被放入with-as语句中as说明符指定的变量中

__exit__(self,type,value,tb)方法在离开上下文管理器时调用,
如果有异常出现,type、value、tb分别为异常的类型、值和追踪信息,
如果没有异常3个参数均设为None,它的返回值为True时,表示被引发的异常得到了处理,反则亦然
contextlib模块是Python标准库提供的更加易用的上下文管理器工具模块,
它是通过装饰器实现的,不需要再创建类以及使用__enter__和__exit__这两个
方法,比with语句更加方便

contextlib模块包含一个装饰器contextmanager和一些辅助函数,
装饰器contextmanager只需要写一个生成器函数就可以代替自定义的上下文管理器

Day33:反射

来自:https://www.9xkd.com/user/plan.html

上一篇 下一篇

猜你喜欢

热点阅读