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 循環迭代,只要沒有顯示的向文件中寫內容,不關閉文件也是可以的,但是推薦最好在結束時關閉文件