欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python Day5

程序员文章站 2024-02-24 14:35:04
...

类和对象

实例对象是程序处理得实际对象:各自都有独立得命名空间,但是继承创建该实例得类中得变量名。类对象来自于语句,而实例来自于调用。每调用一个类,就会得到这个类得新得实例。

第一个例子:

In [28]: class FirstClass():
    ...:     def setdata(self, value):
    ...:         self.data = value
    ...:     def display(self):
    ...:         print(self.data)

In [29]: x = FirstClass()
    ...: y = FirstClass()

In [30]: x.setdata("King Arthur")
    ...: y.setdata(3.14159)

In [31]: x.display()
King Arthur

In [32]: y.display()
3.14159

我们可以再类得内部或外部修改实例属性。在类内时,通过方法对self进行赋值运算;在类外时,则可以通过对实例对象进行赋值运算:

In [33]: x.data = "new value"

In [34]: x.display()
new value

我们甚至可以在实例命名空间内产生全新得属性:

In [35]: x.antherattribute = "spam"

In [36]: x.antherattribute
Out[36]: 'spam'

第二个例子:
建立在第一个例子基础之上,会定义一个新得类SecondClass,继承FirstClass所有变量名,并提供其自己得一个变量名。

In [37]: class SecondClass(FirstClass):
    ...:     def display(self):
    ...:         print('current values = "%s"' % self.data)

In [38]: z = SecondClass()

In [39]: z.setdata(42)
    ...: z.display()
current values = "42"

可以看见,setdata依然是执行FirstClass中的版本,但是这一次display属性是来自SecondClass,并打印定制的内容。
SecondClass引入的专有化完全是在FirstClass外部完成的,也就是说,不会影响当前存在的或未来的FirstClass对象:

In [40]: x.display()
new value

正则表达式和re模块

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
re 模块使 Python 语言拥有全部的正则表达式功能。

^ Matches the beginning of a line
$ Matches the end of the line
. Matches any character
\s Matches whitespace
\S Matches any non-whitespace character
、* Repeats a character zero or more times
、*? Repeats a character zero or more times (non-greedy)
、+ Repeats a character one or more times
+? Repeats a character one or more times (non-greedy)
[aeiou] Matches a single character in the listed set
[^XYZ] Matches a single character not in the listed set
[a-z0-9] The set of characters can include a range
( Indicates where string extraction is to start
) Indicates where string extraction is to end

1. re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:
re.match(pattern, string, flags=0)

In [42]: print(re.match('www', 'www.runoob.com').span())  # 在起始位置匹配
(0, 3)

In [43]: print(re.match('com', 'www.runoob.com'))         # 不在起始位置匹配
None

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

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

In [49]: line = "Cats are smarter than dogs"
    ...: 
    ...: matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

In [50]: if matchObj:
    ...:    print ("matchObj.group() : ", matchObj.group())
    ...:    print ("matchObj.group(1) : ", matchObj.group(1))
    ...:    print ("matchObj.group(2): ", matchObj.group(2))
    ...: else:
    ...:    print ("No match!!")
matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2):  smarter

2. re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。
函数语法:
re.search(pattern, string, flags=0)

In [52]: print(re.search('www', 'www.runoob.com').span())  # 在起始位置匹配
(0, 3)

In [53]: print(re.search('com', 'www.runoob.com').span())         # 不在起始位置匹配
(11, 14)

3. 检索和替换

Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。

语法:
re.sub(pattern, repl, string, count=0, flags=0)

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

In [61]: phone = "2004-959-559 # 这是一个国外电话号码"

In [62]: num = re.sub(r'#.*$', "", phone) # 删除字符串中的 Python注释 
    ...: print ("电话号码是: ", num)
电话号码是:  2004-959-559 

In [63]: num = re.sub(r'\D', "", phone) # 删除非数字(-)的字符串
    ...: print ("电话号码是 : ", num)
电话号码是 :  2004959559

http请求

1、http请求方式:get和post

get一般用于获取/查询资源信息,在浏览器中直接输入url+请求参数点击enter之后连接成功服务器就能获取到的内容,post请求一般用于更新资源,通过form表单或者json、xml等其他形式提交给服务器端,然后等待服务器端给返回一个结果的方式(这个返回结果一般就是被修改之后的是否成功的状态,或者是修改后的最新数据table等)。

http请求,不论是get还是post请求,都会包含几个部分,分别是header,cookie,get会有param,post会有body。

这个可以通过fiddler里面抓包就可以拿到需要的Headers,一般需要设置的值可能有:

header = {
“Host”: “x.x.360.cn”,
“Authorization”: “Basic: someValue”,
“Content-Type”: r"application/json",
“Connection”: “keep-alive”,
“Proxy-Connection”: “keep-alive”,
“Cookie”: “xxxxxxxxx(备注:这里的具体值请自行填写,其他key对应的值也是一样)”,
“User-Agent”: “360xxxxxx(备注:这里的信息也请自行抓到之后填写,不需要的话,可以不用填写)”
}

2、http请求端口、cookie,以及实现具体的get和post请求

http请求端口默认是80,如果不指定的话,默认走的就是80,否则就需要指定服务器端指定listen的端口。

cookie是什么?具体见:http://www.cnblogs.com/hdtianfu/archive/2013/05/30/3108295.html, 主要内容:有两个Http头部和Cookie有关:Set-Cookie和Cookie。Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie。Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。

相关标签: python