【學習筆記】煉數成金 Dataguru python2.x 2012

此教程 06Python正則表達式、08爬蟲 部分講解不錯,值得回顧學習

01.解釋型腳本語言初探
解釋性腳本語言最重要的特性:動態類型

Python結構化編程,函數式編程,面向對象編程

關係數據庫的 3範式NF
笛卡爾操作join
很多對象與類如果既不是包含也不是繼承關係,統稱叫做關聯關係。面向對象的包含關係主要由兩種表現方式:組合、聚合,這兩種方式的區別就是構成子對象的生命週期不同。
面向對象主要分爲3個階段:OOA,OOD,OOP
傳統編譯型語言如C++,Java都是強類型語言,要求變量在定義時就明確定義變量類型,整個生命週期都是該類型。但對於動態類型語言呢,在運行時才決定他的類型,在執行過程中可以改變數據類型,在開發過程中無疑帶來很大靈活性,
Python本身是弱類型語言,只有在運行時才決定是什麼類型。

Python內置列表,元組,字典幾種數據結構增強了很多特性。本身也是膠水語言,可以靈活地與其他語言進行組合,實現整體功能,比如對速度要求很高的算法部分,使用C++實現。Python寫東西就是快。

常見編程語言比較
編譯型:C C++ Java .net object-c
解釋型:Python MATLAB Erlang lua Perl shell HTML JavaScript

笛卡爾方法論:拆分、排序、處理、歸併

建議C C++是必須的語言,因爲它對計算機內存會時刻保持很清晰的概念。

程序員的陋習:
自我,封閉,慣性,溝通障礙,一葉障目,工作量的估計樂觀,拒絕變化,拒絕重構

02.Python開發環境
Python運行環境的安裝和配置;Setuptools,wingIDE, 兩個非常重要的module(os,sys)
Setuptools工具對Python來說,類似於yum之於Redhat,apt-get之於ubuntu

某些版本win平臺下安裝Python後,在cmd並不能啓動Python交互式環境,需要手動將Python添加到環境變量PATH,Python輔助工具建議安裝Setuptools, pip
下載與Python版本對應的Setuptools,直接運行自動找到Python路徑/sitepackages,同時安裝easy install的script(該script也要添加到path環境變量),這樣就可以cmd中使用easy install命令了
如easy install django,easy install numpy 就可以安裝了(當然這種安裝方式必須聯網),安裝第三方庫還可以其他方式,如下載lib離線壓縮包,執行setup.py的方式,執行命令python setup.py build/install

linux下Python環境安裝部署
存在一種情況,Linux上自帶的Python版本與我們開發需要的不一致,就像java -version一樣,Linux下可以存在多個Python/jdk版本,只要在.bashprofile文件配置好指定版本的路徑調用就好。把對應版本解壓,將bin目錄添加到命令搜索路徑path下,安裝到/usr/local/下(行業規定)
注意在Linux下不要覆蓋系統自帶Python版本,因爲很多系統工具可能依賴該版本環境。因此一定要安裝指向路徑./configure –prefix=/usr/local/pythonnew,然後進行make編譯過程,然後makeinstall安裝。
那麼如何在環境變量中使用指定版本的Python呢?可以在環境變量文件即bashprofile中設置,或者使用軟連接ls方式添加到/bin/目錄,就像win中的快捷方式。
ln -s /usr/local/pythonnew/bin/python /bin/pythonnew ln -s 真實文件路徑 軟連接路徑

用mget工具獲取Linux平臺的setuptools工具包,到官網上找到對應版本下載鏈接,右鍵另存爲的獲取下載鏈接downURL,mget downURL即可下載。
然後同樣方式安裝setuptools,easy_install django安裝第三方lib。
這樣就完成了在Linux上安裝配置新指定版本Python 並配置setuptools,easy_install的過程。

wingIDE安裝
wingIDE可以靈活設置作爲main入口的.py文件,還支持分步斷點調試Debug Probe,還可以將Debug Probe窗口作爲IDLE一樣的交互式工具,隨時查看變量,對象信息。
wingIDE中F1,F2鍵可以方便的切換下方,右側區域窗口。

5)自醒的便利
type(),str(),dir(),help()

查看變量類型用type
對於sys package,要查看有哪些構成函數成員,用dir(sys),是一種概覽展示。
對於想要詳細查看該module或function的用法說明,用help(sys),help(sys.func)
str(sys) ; type(sys)

python中非常重要的兩個module:os,sys
import os
dir(os)

import(sys)
dir(sys)

03.python使用基礎
單引號’strings’ 雙引號”strings” 三引號”’strings”’ or “”“strings”“”
三引號可以用作:定義字符串;定義塊註釋
當字符串內部含有特殊字符\t,\n等,會被自動轉義處理,print(‘abcd\nsdfj\tkl’),如果不希望內置特殊字符被轉義,有兩種方法:
1.手動在每個特殊字符前添加轉義字符\,但如果str是未知,或者很多特殊字符,將很難處理;
2.聲明字符時用a=r’abcd\nsdfj\tkl’,特殊字符將不被轉義

a=r’abcd\nsdfj\tkl’
a
‘abcd\nsdfj\tkl’
print(a)
abcd\nsdfj\tkl

插入自定義分隔符的處理非常簡單:利用str自帶的join

”.join(b)
‘abcd\nsdfjkl’
‘-‘.join(b)
‘a-b-c-d-\n-s-d-f-j-k-l’
‘_’.join(b)
‘a_b_c_d_\n_s_d_f_j_k_l’
‘-._’.join(b)
‘a-.b-._c-._d-.\n-._s-._d-._f-._j-._k-._l’

eval()方法,將數值型,可計算的字符串,轉換爲計算型表達式:

a=’1+1*2*5-3’
a
‘1+1*2*5-3’
eval(a)
8
eval(‘“1”+”1”’)
‘11’
type(eval(‘“1”+”2”’))

conn,address=sock.accept()

rlists=[sock]
wlists=[]
msg_que={}
timeout=20

print(connect by client,address)

while rlists:
rs,ws,es=select.select(rlists,wlists,rlists,timeout)
if not (rs or ws or es)
print(‘timeout’)
break
for s in rs:
if s in sock:
conn.addr=s.accept()
print(connect by client,address)
conn.setblocking(False)
rlists.append(s)
msg_que[s]=Queue.Queue()
else:
data=sock.recv(1024)
if data:
print(data)
msg_queue[s].put(data)
if s not in wlists:
wlists.append(s)
else:
if s in wlists:
wlists.remove(s)
rlists.remove(s)
s.close()
del msg_queue[s]
for s in ws:
try:
msg=msg_queue[s].get_nowait[]
except Queue.Empty:
print(ms_empty)
wlists.remove(s)
else:
s.send(msg)
for s in es:
print(‘except’,s.getpeername())
if s in rlists:
rlists.remove(s)
if s in wlists:
wlists.remove(s)
s.close()
del msg_queue[s]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章