參考head first Python整理html
列表:(相似數組)編號從0開始,數據類型不那麼重要。它在內存中相似堆棧結構,從底到上。python
movies = []nginx
numbers = ["one","two","three"] # 定義一個列表,能夠直接printgit
numbers[1] # 中括號訪問列表github
len(numbers) # 計算列表長度sql
numbers.append("four") # 在列表末尾增長一個數據項django
numbers.pop() # 在列表末尾刪除數據項編程
numbers.extend("five") # 在列表末尾增長一個數據項json
numbers.remove("two") # 在列表中找到並刪除一個特定的數據項python3.x
numbers.insert(0 , "zero") # 在某個特定的位置前面增長一個數據項
類表能夠包含混合類型的數據,好比字符串和數字,任意類型也能夠。
迭代處理列表,利用內置的for循環,例如:
numbers = ["one","two","three","four","five"]
for num in numbers:
print(num) ----> 組
for循環:能夠處理任意大小的類表
列表是動態的,可是訪問一個不存在的數據項,python會產生一個IndexError,表示越界。
字符串可使用雙引號,也可使用單引號。
標識符規則:字母或「_」開頭,不容許%$&開頭
大小寫敏感:msg ≠ MSG
列表能夠嵌套列表,能夠嵌套任意多層的列表
numbers = ["one","two","three",["four","five","six",["seven","eight","nine"]]]
numbers[3][3][1] = eight
python內置函數(BIF):
isinstance() # 檢查某個特定標識符是否包含某個特定類型的數據。
numbers = ["one","two","three"]
isinstance(numbers,list) # 判斷numbers是不是列表
語法:
if xxx:
true組
else:
false組
def functionName(params):
function code suite ----> 函數代碼組
suite組:python代碼塊,經過縮進指示分組。
BIF內置函數:
input() 、isinstance()、len()、print()、open()、range()、type()、dir()..........
註釋:
多行註釋 ''' '''
單行註釋 #
import sys;
sys.path # 查看模塊路徑
range()用法:
for num in range(4): # 返回一個迭代器,根據須要生成一個指定範圍的數字列表
print(num)
文件操做
_file = open("fileName")
_file.readLine() # 從文件讀取一行
_file.seek(0) # 返回文件開頭處
for eachLine in _file:
eachLine.trip().split(":") # 去掉空白符;以":"爲符號分隔符分割字符串,返回字符串列表
eachLine.trip().split(":",1) # 去掉空白符;以":"爲符號分隔符分割字符串,數字1表示把字符串分解爲兩個部分,返回字符串列表
eachLine.find("python") # 查找「python」字符串,不存在則返回-1,若是存在則返回在原字符串的索引位置
異常處理
try:
code
except:
fail recovery code
finally:
release
或者
try:
with xxx as xx: # 上下文管理協議
xxxx
except xxx as xx: # 給異常起個名字
xxxx
遇到的Exception:
ValueError/IOError
兩種類型的列表:
①能夠改變類型的列表 ----> 中括號 ----> 可變列表
②一旦建立就不能改變的列表 ----> 小括號 ----> 不可變列表(元組)
OS模塊:
import os
os.path.exists("fileName") # 判斷文件是否存在
os.getcwd() # 獲取當前地工做目錄
python中的字符串是不可變的,一旦建立一個字符串,它就不會再改變了。
內存管理技術???
變量 ----> 引用 ----> 數據對象 ----> 字符串
not # 取反
in # 測試成員關係
locals() # 返回當前做用域中定義的全部名的一個集合
print() # 默認是輸出到屏幕,能夠經過指定sys.stdout輸出到一個指定的文件
pickle標準庫
dump() # 保存數據
load() # 恢復數據
函數缺省值問題:
print(value,sep='',end='\n',file=sys.stdout) # 屏幕
print('abc',file='temp.txt') #文件
方法串鏈:從左往右
函數串鏈:從右往左
排序:
原地排序(in-place sort)
sort() # 排序後替換原來的數據,原來的數據的順序會丟失
複製排序(copied sort)
sorted() # 排序後返回一個原來數據的有序副本,原來的數據的順序不會丟失,默認是升序排序
列表推導???
去重:
思路一:建立一個新的列表,從原來的列表中取出一個元素,判斷一個元素是否在新的列表中,若是不存在則添加,若是存在則去掉。
思路二:使用BIF set(),建立一個空集合
工廠函數???
字典:將數據值和鍵關聯。維護關聯關係,而不是順序。
定義字典:numbers ={} 或者numbers = dict()
訪問字典中的元素:使用中括號,指定鍵
面向對象編程模型
基礎概念:類的方法,類的屬性,實例
class Numbers:
def __init__(self):
# coding here
由關鍵字class建立對象
初始化對象機制:__init__()[能夠用來定製對象的初始化狀態]
實現對象的建立:類名的調用賦值給相應的變量名,例如 num = Numbers()
定義一個類,即定義了一個定製工廠函數。
num = Numbers() 的調用python的內部轉換:Numbers().__init__(num),num對象實例標識符賦值到self參數
目標標識符賦值到self參數,self參數能夠幫助標識要處理哪一個對象實例的數據(self指向當前對象實例);每一個方法的第一個參數都是self(python要求每一個方法的第一個參數爲調用對象實例???)
可使用點記法訪問對象中的屬性
自建立的類能夠繼承python內部的類
class numbers(list):
def __init__(self, n_name):
list.__init__([])
self.name = n_name
python標準模塊:
string
http.server
glob
cgitb
cgi
pickle
json
urllib/urllib2
sys
os
sqlite3
time
unittest/doctest
===================我是分割線===================
2018-12-31 20:38:17
cmd install django
python2.7用以下命令,不指定版本號,默認會下載安裝最新版本,最新版本支持python3.x,而後會發生衝突
pip install -i https://pypi.douban.com/simple/ django==1.11
python3.6用以下命令,不用指定版本號,默認會下載安裝最新版本,最新版本支持python3.x
pip3 install django
建立虛擬環境
方式一:
pip install virtualenv
cd 某個目錄
python2.x使用以下命令:
virtualenv 某某文件名
【等待片刻,安裝成功會提示done】
python3.x使用以下命令:
virtualenv -p xxx\python3.exe 某某文件名
【等待片刻,安裝成功會提示done,須要注意的是要指定python3的路徑】
目錄結構以下:
而後能夠進入虛擬環境中的Scripts文件夾中,cmd中,執行文件activate.bat和deactivate.bat進行切換。
用以上的方法建立虛擬環境,每次都須要進入某個指定的位置,記住路徑。採起如下的方法更方便,在任意位置集中管理各個虛擬環境。
方式二:
pip install virtualenvwrapper-win
安裝成功後設置 Envs路徑,在環境變量中加入WORKON_HOME。例如:WORKON_HOME=E:\Envs
啓動cmd
workon 查看各個虛擬環境
mkvirtualenv xx 默認建立python2.x的虛擬環境,名字爲xx
mkvirtualenv --python=python3.x的安裝路徑 xxx 建立python3.x的虛擬環境,名字爲xxx
workon xxx 進入某個虛擬環境
deactivate 退出某個虛擬環境
以方式二嘗試建立Scrapy的虛擬環境,以python2.7.x爲主本:
打開cmd,
workon 查看當前各個虛擬環境
mkvirtualenv myPy2Scrapy 建立虛擬環境,成功後會提示done,而後自動進入所建立的虛擬環境。cmd左邊會提示 (myPy2Scrapy)
pip install scrapy 安裝Scrapy
安裝過程當中提示error:
1 building 'twisted.test.raiser' extension 2 error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27 3 ---------------------------------------- 4 Failed building wheel for Twisted 5 Running setup.py clean for Twisted
http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 到這個網址下載對應版本的wisted。我下的是 Twisted‑18.9.0‑cp27‑cp27m‑win_amd64.whl
進入到下載了wisted 的位置
打開cmd
進入虛擬環境 workon myPy2Scrapy
安裝wisted,pip install Twisted‑18.9.0‑cp27‑cp27m‑win_amd64.whl
安裝成功後,從新安裝scrapy,沒有報錯。
ps:
whl包:已經編譯的包,相似於exe文件;
Twisted:用Python實現的基於事件驅動的網絡引擎框架,Twisted支持許多常見的傳輸及應用層協議,包括TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。
whl,twisted更多內容參考博客:
https://blog.csdn.net/vitaminc4/article/details/76651313
http://www.javashuo.com/article/p-rwdamfyd-ex.html
2018-11-19 20:43:04
《Nginx開發從入門到精通》,淘寶核心系統服務器平臺組所編寫的一本關於Nginx的書籍。該書由rst格式的文件寫成。可使用python模塊sphinx將該書轉換成html格式,方便離線閱讀。RST與Python相似Javadoc與Java。不要使用高版本的sphinx去轉化。下面使用1.1版本。轉化成功。
https://pypi.org/project/Sphinx/1.1/
1 pip install Sphinx==1.1 #使用低版本1.1,能夠成功轉換成html格式 2 3 sphinx-build -b html source build # source 源目錄,build 目標目錄
sphinx官網:https://pypi.org/project/Sphinx/
sphinx手冊官網:http://www.sphinx-doc.org/en/master/
sphinx最新版是1.8.2,能夠經過下面命令安裝:
1 pip install -U Sphinx