2017.6.16-18

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
或者
try:
while True:
print it.next()
except StopIteration:
break

for 就是 python 使用迭代对象的一个语法糖,首先通过可迭代对象的__iter__ 获取迭代器,然后通过 __next__(3.x版本),next(2.6以上版本)函数获取迭代的值,如果是迭代器,__iter__函数返回的就是迭代器自身,所以迭代器也是可以直接使用for来实现迭代的

迭代器是一次性消耗品
在3.6版本的python中,如果想复制迭代器,不能通过直接复制的方式,因为这是浅拷贝,需要使用深拷贝的方式

from copy import deepcopy
it = iter(lst)
it2 = deepcopy(it)

这样就能将 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 循环迭代,只要没有显示的向文件中写内容,不关闭文件也是可以的,但是推荐最好在结束时关闭文件

你可能感兴趣的:(2017.6.16-18)