python 网络编程,class,迭代器,文件操作
网络编程
这部分还是不熟悉,主要查看一下scrapy网页捕获,urllib, urllib2 socket socketserver 这些库的方法和使用
class
构造函数 __init__
__getitem__
访问元素
__delitem__
调用del函数删除时调用,可理解为析构函数
__setitem__
赋值
__len__(self)
获取长度
类之间的继承,在新式类中,后续使用都使用新式类,注意使用super() 函数,在构造函数中
迭代器
from collections import Iterator, Interable
可迭代对象和迭代器的区别:
比如 lst = [1, 3, 5]
lst 是一个可迭代对象,通过内置函数 iter() 能够获取一个迭代器,然后通过 next() 函数实现迭代
it = iter(lst)
lst 是一个可迭代对象,it是一个迭代器
for key in lst 可迭代对象,能够直接使用
对于迭代器,也能够直接使用
for key in it
或者
<code>try:
while True:
print it.next()
except StopIteration:
break</code>
for 就是 python 使用迭代对象的一个语法糖,首先通过可迭代对象的__iter__
获取迭代器,然后通过 __next__
(3.x版本),next(2.6以上版本)函数获取迭代的值,如果是迭代器,__iter__
函数返回的就是迭代器自身,所以迭代器也是可以直接使用for来实现迭代的
迭代器是一次性消耗品:
在3.6版本的python中,如果想复制迭代器,不能通过直接复制的方式,因为这是浅拷贝,需要使用深拷贝的方式
<code>
from copy import deepcopy
it = iter(lst)
it2 = deepcopy(it)</code>
这样就能将 it 迭代器保存下来
文件操作
open, read, write, close, seek, tell, readline, readlines, writelines
f = open(path, mode)
mode :r, w, +, a, b
还有一种写法,就是
with open(path, mode) as f 就相当于
f = open(path, mode)
在新版本中,文件流的读取,不再需要 open ,read, write, close 这样,文件流对象 f 是一种可迭代对象,能够直接使用for 循环迭代,只要没有显示的向文件中写内容,不关闭文件也是可以的,但是推荐最好在结束时关闭文件