Python is free and easy to learn if you know where to start!
注意事項(xiàng)
- python目前有兩個(gè)主要的大版本: python2.x python3.x, 變化比較大, 注意所看資料是針對(duì)哪個(gè)版本的.
- 注意不要再同一個(gè)腳本中混合使用tab和空格進(jìn)行縮進(jìn).
- 推薦在終端中使用ipython
- 關(guān)于python代碼風(fēng)格規(guī)范, 請(qǐng)參考pep8
- 如果腳本中包換非英文字符, 請(qǐng)?jiān)?!/python下一行添加"# coding: utf-8"
數(shù)據(jù)類(lèi)型
變量的可變與不可變.
python中基本的數(shù)據(jù)類(lèi)型包括:
- number(int, float)
- string
- tuple
- list
- dict
- boolean
其中: number, string, tuple 屬于不可變類(lèi)型, 其余屬于可變類(lèi)型.
改變一個(gè)數(shù)字的值, 實(shí)際上是創(chuàng)建了一個(gè)新的對(duì)象.
In [1]: a = 1
In [3]: id(a)
Out[3]: 140405345671768
In [4]: a = a + 1
In [5]: id(a)
Out[5]: 140405345671744
注意, 這里變量 a 的id變了. string 也是不可變類(lèi)型, 改變一個(gè)字符串的值也會(huì), 也會(huì)創(chuàng)建一個(gè)新對(duì)象. 所以在python應(yīng)該盡量避免對(duì)字符串使用 '+' 的操作, 防止程序執(zhí)行效率下降.
如果是一個(gè)list
In [6]: b = [1]
In [7]: id(b)
Out[7]: 4322169992
In [8]: b.append(1)
In [9]: b
Out[9]: [1, 1]
In [10]: id(b)
Out[10]: 4322169992
我們看到id沒(méi)有發(fā)生變化.
一切皆是對(duì)象
In [12]: dir("hello")
Out[12]:
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__',
...
...
'capitalize', 'index', .......]
這里我們看到, "hello" 并不是一個(gè)簡(jiǎn)單的, 猶如在 C 里那樣的字符串, 與他關(guān)聯(lián)的還有一大堆的方法.
什么是對(duì)象? 對(duì)象實(shí)際上就是 一堆數(shù)據(jù)與一堆方法的集合.
這里要強(qiáng)調(diào)一點(diǎn), python并非一門(mén)純的面向?qū)ο蟮恼Z(yǔ)言, 其中還包括了很多過(guò)程式的, 函數(shù)式的編程元素.
常用方法
string
'count',
'encode', 'decode',
'startswith', 'endswith',
'find', 'rfind',
'index', 'rindex',
'join',
'upper', 'lower', 'swapcase',
'lstrip', 'rstrip', 'strip',
'replace',
'split', 'rsplit', 'splitlines',
list
'insert',
'append',
'extend',
'count',
'index',
'pop',
'remove',
'reverse', 'sort'
dict
'get',
'setdefault',
'has_key',
'items', 'iteritems', 'iterkeys', 'itervalues',
'keys',
'values',
'pop', 'popitem',
控制結(jié)構(gòu)
if
- true: True, "x", 1, [1], {"a": 1}
- false: False, "", 0, [], {}
operator: and, or, not
for
python中, 沒(méi)有類(lèi)似C中
for( i=1; i<=100; i++ )
式的語(yǔ)句
語(yǔ)法:
for {$var} in [...]:
...
常用函數(shù)
range(), xrange().
常用命令
continue, break
函數(shù)
語(yǔ)法:
def function_name(arg1[=...], arg2, ...):
pass
重要概念:
- 參數(shù)默認(rèn)值
- 參數(shù)unpacking, f(*args, **kv)
- 匿名函數(shù), lambda
- doc string
- 函數(shù)副作用
- 裝飾器
類(lèi)
語(yǔ)法:
Class Class_name():
def __init__():
pass
def other_function():
pass
重要概念:
- self
- 類(lèi)變量與實(shí)例變量, 類(lèi)方法(靜態(tài)函數(shù))與實(shí)例方法
- 類(lèi)的實(shí)例化
- 繼承
- 父類(lèi)方法調(diào)用
包
重要概念:
- python path
- import
- _init_.py
測(cè)試
作為一個(gè)程序員熄赡,學(xué)會(huì)如何測(cè)試自己的代碼是必備的技能谒所,而python 在這方面提供了非常完善的基礎(chǔ)設(shè)施。
Unittest
Mock
python3.4 加入標(biāo)準(zhǔn)庫(kù) unittest.mock,之前的版本需要另外安裝缺虐。
文檔
通過(guò)Sphnix可以根據(jù)代碼中的 docstring 生成文檔芋簿。支持多種輸出格式步氏,例如:html滑沧,pdf等。
其他
virtualenv 可以幫助開(kāi)發(fā)者創(chuàng)建一個(gè)獨(dú)立的python 環(huán)境躬它,方便后續(xù)的代碼打包(包括依賴(lài)包)和發(fā)布腾啥。