Task 5

作者: delugezhang | 来源:发表于2019-08-13 14:23 被阅读0次

    1. 类和对象

         在python中,所有数据类型都可以视为对象。在面向对象的编程中,最重要的概念就是类(Class)和实例(Instance)。类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

         以Student类为例,在python中,定义类是通过class关键字,class后面紧接着是类名,即Student,类名通常是以大写字母开头,紧接着是(object),表示改类是从哪个类继承下来的,通常,如果没有合适的继承类,就用object类,这是所有类最终都会继承的类。

          定义好了Student类,就可以根据Student类创建出Student的实例,创建实例是通过类名+()实现的。

          可以看出,变量tom指向的就是一个Student的object,后面的0x0000019DC9A32E80是内存地址,每个object的地址都不一样。

         可以自由地给一个实例变量绑定属性,比如,给tom变量绑定一个name属性:

         类可以起到模板的作用,在创建实例的时候,我们可以把一些必须绑定的属性强制填进去。比如Student类,在创建实例的时候就通过 __init__ 方法,把name,score等属性绑上去:

         注意__init__方法的第一参数永远是self,表示创建的实例本身。因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。有了__init__方法,在创建实例的时候就不能传入空的参数了,必须传入与__init__方法相匹配的参数,但self不需要传。

          和普通函数相比较,在类中定义的函数只有一点不同,就是第一参数永远是实例变量self,并且,在调用时,不用传递该参数。

    2. 正则表达式

          正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,就认为它匹配了,否则,该字符串就是不合法的。

    在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,用\w可以匹配一个字母或数字,所以:

         . 可以匹配任意字符,所以:

          要匹配变长的字符,在正则表达式中,用 * 表示任意个字符(包括0个),用+表示至少一个字符,用 ?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:

          要做更精准地匹配,可以用[ ]表示范围,比如:

    3. re模块

          re模块提供了python全部的正则表达式功能,常用的如下:

    (1)re.match函数

          re.match 尝试从字符串的起始位置匹配一个模式,匹配成功re.match方法返回一个匹配的对象,否则返回None。

         函数语法:re.match(pattern, string, flags=0),pattern为匹配的正则表达式,string为要匹配的字符串,flags为标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

          我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

          group(num=0):匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

          groups():返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

    (2)re.search函数

          re.search 扫描整个字符串并返回第一个成功的匹配,匹配成功re.search方法返回一个匹配的对象,否则返回None。

          函数语法:re.search(pattern, string, flags=0),pattern为匹配的正则表达式,string为要匹配的字符串,flags为标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

          re.match与re.search的区别是:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

    (3)re.sub函数

          用于替换字符串中的匹配项。

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

    (4)re.compile 函数

          compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

          语法格式为:re.compile(pattern[, flags])

    (5)findall 函数

          在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

    语法格式为:findall(string[, pos[, endpos]])

    (6)re.finditer 函数

          和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

          语法格式为: re.finditer(pattern, string, flags=0)

    (7)re.split 函数

         split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:

          re.split(pattern, string[, maxsplit=0, flags=0])

    http://www.runoob.com/python/python-reg-expressions.html

    4. datetime模块学习

           python中的datetime模块提供了操作日期和时间功能, 该模块提供了五种核心对象:datetime(时间日期类型), date(日期类型), time(时间类型), tzinfo(时区类型), timedelta(时间差类型)。分别如下:

    (1)datetime 对象

          datetime对象可以用来表示精确的日期和时间,其实例化方法如下

         在实例化datetime对象时,year, month, day是必填项,hour, minute, second, microsecond(微秒), tzinfo(时区)是可选项。

    (2)date 对象

          date对象和datetime对象的区别在于,date对象只能表示日期,不能表示时间(即其精确度为天)。date实例化时须要且仅须要三个参数:year, month, day。date对象是没有时区(tzinfo)属性的。

    (3)time对象

          和date对象相反,time对象只能用来表示时间,而不能用来表示日期。time对象所表示的时间可以精确到微秒,而且可以具有时区(tzinfo)属性。

          python中还有另外一个模块我们经常用到的模块:time,这个模块也含有用来表示时间、日期对象的函数。常用的有time.sleep(), time.time()

    (4)timedelta对象

          timedelta对象表示一个时间段,timedelta对象可以通过手动实例化得到,也可以通过上述三个对象(datetime, date, time)相减得到。

          手动实例化timedelta时,可以传入的参数有:days, seconds, microseconds, milliseconds, minutes, hours, weeks。

    (5)tzinfo对象

    https://www.jianshu.com/p/1957c4cab0a3

    5. http请求

    (1)urllib方法

          urllib是一个内置在Python标准库中的模块,并使用http.client来实现HTTP和HTTPS协议的客户端。 

    (2)Requests方法

          Requests 抽象了大量的程式化的代码,使得HTTP请求比使用内置urllib库更简单。

         get请求,使用方法:r = requests.get(....)

          发起post请求,使用方法:r = requests.post(...)

    相关文章

      网友评论

          本文标题:Task 5

          本文链接:https://www.haomeiwen.com/subject/azkvjctx.html