1.类和对象
类的属性:
解释:在Python中属性分为两种:类属性和实例属性;
区别:“类属性”在该类及其所有的实例中是共享的;而“实例属性”在实例之间不共享,每个实例都拥有一个属于实例本身的“实例属性”,在上边的这段程序中count就相当于类属性,number相当于实例属性,其中无论实在类外还是类内,通过“类名.类属性名”即可使用这个类的类属性,但是唯独在析构函数中不可以这么用,在析构函数中我们需要通过“self._class_.类属性名”的方式来访问类属性。
“self.number=number” :使用初始化函数的参数number的值为实例属性number初始化,这样我们就可在析构的时候再次输出它了。
类的方法:
Python中类分为三种:“实例方法”,“静态方法”,“类方法”
实例方法:
“实例方法”是类的实例所特有的方法,实例方法只能通过实例的引用进行调用,并且在实例方法中可以通过self参数直接访问调用该方法的实例本身,上边有用到。
静态方法:
“静态方法”既可以通过各类名进行调用,也可以通过实例的引用进行调用。在Python中,静态方法在声明时需要使用修饰器“@staticmethod”修饰,就是在函数声明的上一行中添加修饰器;同时,“静态方法”中不需要传入self参数,因此我们无法直接获取调用静态方法的对象的引用。
“类方法”也是既可以通过类名进行调用,也可以通过实例的引用进行调用。并且类方法需要传入一个参数(常命名为“cls”)作为调用该方法的类的引用,类似于类方法中的self,所以在这点上来看,类方法更像是实例方法,只不过它关注的不是调用该方法的对象而是类。Python中类方法需要使用修饰器“@classmethod”进行修饰。
原文链接:https://blog.csdn.net/hold_on_/article/details/86632715
2.正则表达式
3.re模块
python 中的re模块
1,主要方法
match 方法:从起始位置开始查找,一次匹配 。
search 方法:从任何位置开始查找,一次匹配 。
findall 方法:全部匹配,返回列表 。
finditer 方法:全部匹配,返回迭代器 。
split 方法:分割字符串,返回列表
sub 方法:替换 。
compile 方法: 用来编译正则表达式模式字符串,并生成 Regular Expression Objects。
2,参数讲解
flags参数:上面的函数都有这个参数。
flags 有很多可选值:
re.I(IGNORECASE)忽略大小写,括号内是完整的写法 。
re.M(MULTILINE)多行模式,改变^和$的行为 。
re.S(DOTALL)点可以匹配任意字符,包括换行符 。
re.L(LOCALE)做本地化识别的匹配。
re.U(UNICODE) 使用\w \W \s \S \d \D 使用取决于 unicode 定义的字符属性。在 python3 中默 认使用该 flag 。
re.X(VERBOSE)冗长模式,该模式下 pattern 字符串可以是多行的,忽略空白字符,并可以添加 注释 。
3,匹配规则
(1)元字符
. 匹配除换行符(\n)以外的任意字符
\w 匹配大小写字母或数字或下划线或汉字 0-9、a-z、A-Z、_(下划线)、汉字和其他国家的语 言符号
\W 匹配非字母或数字或下划线或汉字,跟\w 正好相反
\s 匹配任意的空白符
\S 匹配任意非空白符
\d 匹配数字
\D 匹配非数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
[] 匹配[]中列举的字符
(2)字符转义
如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没法指定它们,因 为它们会被解释成其它的意思。这时你就必须使用\来取消这些字符的特殊意义。因此,你 应该使用.和*。当然,要查找\本身,你也得用\. 当然我们一般不用这种方法,一般在字符串前面添加一个r就可以去除字符转义了,例如:r’c:\’
(3) 重复
重复零次或更多次
重复一次或更多次
? 重复零次或一次
{n} 重复 n 次
{n,} 重复 n 次或更多次
{n,m} 重复 n 到 m 次
(4)反义
有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它 任意字符都行的情况,这时需要用到反义:
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了 x 以外的任意字符
[^aeiou] 匹配除了 aeiou 这几个字母以外的任意字符
(5)分组
我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了);但如果想要 重复一个字符串又该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以 指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作。
例如:
re.match(r"<([a-zA-Z] )>\w</ \1>",“123456”) #此时\1 表示第一个 括号中的值 (一般分组)。
re.match(r"<(?P\w*)><(?P\w*)>.*</(?P=n2)></(?P=n1)>", “123456”)(命名分组)
(6)选择
l 代表选择 例如:
re.match("\d+(183|192|168)\s\1", “452183 183”) l 代表左右表达式任意匹配一个。它总是先匹配左边的表达式,一旦成功匹配成功则跳过匹配右边的表达式。如果l 没有被包括在()中,则它的范围是整个正则表达式。
原文链接:https://blog.csdn.net/mzp_man/article/details/92249628
4.datetime模块学习
datetime在python中是用来处理时间的一个模块
datetime模块下又包含了几个类
datetime中比较常用的一些函数:https://blog.csdn.net/qq_36119192/article/details/82963084
5.http请求
HTTP客户端以请求消息的形式向服务器发送HTTP请求,其中包括以下格式:
请求行
零个或多个标题(General | Request | Entity)字段后跟CRLF
空行(即CRLF前面没有任何内容的行),表示标题字段的结尾
可选的消息体
请求方法
请求方法指示对由给定Request-URI标识的资源执行的方法。该方法区分大小写,应始终以大写形式提及。下表列出了HTTP / 1.1中支持的所有方法