day18-

day 18-

正则补充
  1. re模块

​ 1)fullmatch(正则,字符串) ——完全匹配:如果匹配成功,返回匹配对象,否则返回None
​ 2)match(正则,字符串) ——匹配字符串开头:如果匹配成功,返回匹配对象,否则返回None
​ 3)search(正则,字符串) ——匹配第一个满足正则的字串:如果匹配成功,返回匹配对象,否则返回None

​ 4)findall(正则,字符串) ——获取所有满足张正则的字串L返回时一个列表,列表中元素是字符串
​ 5)finditer(正则,字符串) ——获取字符串中所有满足正则的字串;返回一个迭代器,迭代器中元素是匹配对象

​ 5)sub(正则,字符串1,字符串2,(N)) 替换
​ 6)split(正则,字符串,(N)) 切割

​ a.匹配对象——获取匹配结果

a1.匹配对象.group()——获取整个正则表达式在字符串中的匹配结果

result = search(r'(\d{2})([a-z]{3})','56r76879iojbhv56567yhs78902-=09xft,ertyu7655red cy75rfvbji87')
print(result)
print(result.group())

a2.匹配对象.group(N)——获取正则中第N个分组匹配到的结果(捕获第N个分组的内容)

print(result.group(1))
print(result.group(2))

​ 2.正则参数

1)忽略大小写 ————匹配的时候小写字母可以直接和对应的大写字母匹配

​ 方法1:在正则表达式的最前面加(?i)

​ 方法2:给正则相关函数的flags赋值为I或者IGNORECASE(记得导入包from re import I,IGNORECASE)

result = fullmatch(r'(?i)abc','ABc')
print(result)
# from re import I,IGNORECASE
result = fullmatch(r'abc','ABc',flags=I)
print(result)

2)单行匹配

正则匹配的时候就是默认多行匹配,多行匹配的时候,不可以和\n进行匹配;单行匹配下,可以和\n进行匹配。
方法1:在正则表达式的最前面加(?s)
方法2:给flags赋值为S

result = fullmatch(r'(?s)a.c', 'a\nc')
print(result)

result = fullmatch(r'a.c', 'a\nc',flags=S)
print(result)

单行匹配和忽略子母带小写一起用

result = fullmatch(r'a.c', 'a\nc',flags=S|I)
print(result)
编程思想

1.面向过程编程(穷人思想) ——遇到问题马上想到怎么按照步骤一步一步解决这个问题

2.函数式编程(小资思想) ——遇到问题先思考是否有一个已经存在的函数具备这个功能,如果有就直接调用函数;没有就去创建具备这个功能的函数

3.面向对象编程(富豪思想)——遇到问题,就先思考有没有一个对象是否具有解决这个问题的能力,如果有,直接用,如果没有就创建这样一个对象。如果没有类还需要创建类。

类和对象

1.类 – 类型,分类
类就是拥有相同功能相同属性的对象集合 ———— 类是一个抽象的概念
对象就是类的实例(类的具体变现

2.定义类(创建类) —— 用代码说清楚这个类是拥有那些相同功能和那些相同属性的对象的集合
1)定义类的任务:用代码说清楚这个类是拥有那些相同功能和那些相同属性的对象的集合
相同功能 ———— 用函数描述功能
相同属性 ———— 用变量描述属性

2)定义类的语法:
class 类名:
类的说明文档
类的内容(由属性和方法组成)
3)说明:
class ———— 关键字,固定写法
类名 ———— 由程序员自己命名(要求:是标识符;不是关键字)(规范:见名知义;类名采用驼峰式命名,并且第一个字母大写;不使用系统名,类名,模块名)
: ———— 固定写法
类的说明文档 ———— 多行注释
类的内容 ———— 由属性和方法组成
属性 — 定义在类中的变量
方法 — 定义在类中的函数

class Person:
    """人类"""
    pass
  1. 创建对象

    语法:
    类名()

p1 = Person()
p2 = Person()
print(p1)
print(p2)
类的方法

​ 方法 —— 定义在类中的函数,他是用来描述这各类具备的相同的功能有哪些
​ 方法分类: 对象方法,类方法,静态方法

​ 1)对象方法
怎么定义: 直接定义在类中的方法
怎么调用: 通过对象.XXX()的形式调用对象方法
特点: 自带参数self,通过对象调用这个方法的时候self不需要传参,系统会自动将当前对象传给self(谁调用就指向谁)
使用场景:如果实现函数方法的功能只要需要对象(需要对象方法),就将函数定义成对象方法

​ 2)类方法
怎么定义: 定义函数前加装饰器:@classmethod
怎么调用: 通过类.xxx()的形式来调用
特点: 自带参数cls,通过调用这个方法的时候cls不需要传参,系统会自动将当前类传给cls(调动谁指向谁)
使用场景:如果实现函数功能不需要对象,就使用类方法或者静态方法

​ 3)静态方法
怎么定义: 在定义函数前加装饰器:@staticmethod
怎么调用: 通过类.xxx()的形式来调用
特点:没有特点
使用场景:如果实现函数功能不需要对象,就使用类方法或者静态方法

class A:
    def func1(self):
        print('对象方法')
        print(self)

    @classmethod
    def func2(cls):  # cls指当前类
        print('类方法')
        print(cls)

    @staticmethod
    def func3():
        print('静态方法')

a = A()    # 创建A的对象
# 用对象调用对象方法(给对象发func1的消息)
a.func1()
print(a)

A.func2()
print(A)

A.func3()
初始方法

__init__方法

__init__方法是Python类中的一个魔法方法
魔法方法:类中所有名字以两个下划线开头并且一两个下划线结尾的方法名都是魔法方法,所有的魔法方法都不需要程序员去调用,系统会在特定情况下自动调用对应的魔法方法。
注意:Python的类有哪些魔法方法是固定的,每个魔法方法什么时候调用也是固定的

1.__init__在通过类创建对象的时候会被自动调用。(每次通过类创建对象的时候,系统会自动调用这个类的__init__方法)

2.创建参数的对象的时候需不需要参数,需要几个参数有这个类中的__init__方法决定

class A:
    def __init__(self):
        print("init方法")
a = A()


class B:
    def __init__(self, x, y):
        print('B的__init__被调用', x, y)
        
b = B(3, 4)
属性

属性就是定义在类中的变量,属性分为类属性和对象属性两种。

1)类属性
怎么对应:直接定义在类中的变量就是类属性
怎么使用:通过’类.xxx‘的形式来使用
什么时候使用:如果属性的值不会因为对象不同而不一样就定义成类属性,例如圆的圆周率

2)对象属性
怎么对应:以self.属性名=值得形式定义在__init__方法中
怎么使用:通过对象.xxx的方式来使用对象属性
什么时候使用:如果属性的值不会因为对象不同而不一样就定义成类属性,例如:圆的半径

案例:定义圆类,拥有属性半径和圆周率,方法:求面积,求圆的周长

#对象属性赋默认值的方法:
# a.附一个固定值
# b.用一个没有默认值的形参赋值
# c.用一个有默认值的形参赋值
class Circle:
    pi = 3.1415926

    def __init__(self, r):
         self.r = r

    def get_area(self):
        # 在实现函数功能呢过的时候如果需要对象属性,就通过self来提供
        return Circle.pi * self.r**2

c1 = Circle(1)
c2 = Circle(10)
print(c1.get_area())
print(c2.get_area())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿酱不秃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值