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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容