人生中的第一份個工作,NLP軟件工程師。在公司接到的第一個任務(wù)就是python的學習,用了一周時間把基礎(chǔ)看了一下,又是星期一一個明媚的早上,把上個星期學習的東西總結(jié)一下。
1.python只有簡單的對象類型,是一種動態(tài)類型化的語言,無須申明變量類型。python中有五種內(nèi)置簡單類型:bool,int,long,float,complex.
通過python id 可以查看基本pyobject標識的更改方式。同時通過嚴格的縮進來控制函數(shù)的作用域,一但超出作用域就會被銷毀,重新創(chuàng)建一個新的對象。
在 Python 中,浮點值始終是按雙精度處理的;因此 Python 的 float 類型對應(yīng)于 C 類語言中的雙精度。
其中布爾類型 True和False注意首字母要大寫,0、空字符串''、空元組()、表[]、空字典{}都被當做False,其他對象都為True.超過整型的數(shù)會被自動調(diào)整成長整型,復(fù)數(shù):z.real,z.imag.
2.python中的邏輯運算符 not, and, or想當于C中的!,&&,||。其用法也和C中的一樣,但所執(zhí)行的邏輯運算并不返回bool值, 而是返回它們實際進行比較的值之一。
3.python中的容器類型:tuple,string,unicode,list,set,frozenset,dictionary。list,set和STL中的差不多意義上的理解就行了,dictionary則可跟STL中的map對應(yīng),都是映射類型。但是其中tuple,string,unicode,frozenset所存儲的數(shù)據(jù)就不可更改。如果出于某種原因需要更改數(shù)據(jù),則需要創(chuàng)建一個新容器來保存新的數(shù)據(jù)。其余的三種是可變的,但是dictionary中的key是不可變的。
tuple是一個異構(gòu)容器,創(chuàng)建可以擁用各種數(shù)據(jù)項,盡管不可以改變,靈活性較差,但在同一環(huán)境中使用帶來的確實高速,這就是所謂的有得必有失吧。
4.在python中傳建字符串,可以用單引號,雙引號,三引號來定義.保證前后都有匹配就OK了.在三重引號中的任何東西都是這個函數(shù)的 doc string,doc string 在運行時可作為函數(shù)的屬性。使用這個據(jù)說是非常重要的,因為在python會經(jīng)常去查看一個函數(shù)的屬性,它的好壞取決于您書寫的 doc string 的好壞。
字符串有兩種類型,str單字節(jié)字符序列,unicode 雙字節(jié)字符序列.當使用 utf-8 編碼時,非 unicode 字符中一個漢字的長度是 3,而使用 gb2312 時是 2.額,我們使用的就是utf-8編碼,大致了解一點點.我覺得這個str對象跟C++里string的對象很象,str.+字符串方法就好了.需要用的時候查查就OK了.
5.關(guān)于python的控制流只有一句話要說的:如果一個流程控制分支下不做任何事情,記得寫一句pass語句,不然Python會報錯.
6.range(起點,終點,差距).用range()對一個目錄進行遍歷
a = ['mary', 'had','a',''little','lamb']
for i in range(len(a));
print i,a[i]
7.列表內(nèi)涵的一個著名例子是生成九九乘法表:
s = [(x, y, x*y) for x in range(1, 10) for y in range(1,10) if x>=y]
print s
列表內(nèi)涵可分為三部分,最左邊是生成每個元素的表達式,中間是for迭代過程,最右邊是可以設(shè)定if判斷的過濾條件.
8.函數(shù)的使用這個這個其實和C的函數(shù)差不多,只不過更寬泛.可以返回多個值,用逗號隔開;同時參數(shù)類型沒用約束,可以輸入任意類型的參數(shù)數(shù)據(jù).
python的參數(shù)提供了四種類型
1). f(arg1,arg2,...)
2). f(arg1=1,arg2=2,..argn=n) 給參數(shù)提供了默認值,關(guān)鍵參數(shù)
3). f(*arg) arg 代表了一個tuple,類似參數(shù)列表,接收多個參數(shù)
4). f(**arg) 傳入的參數(shù)在函數(shù)內(nèi)部保存在一個叫arg的dict中,掉用的時候使用f(a1=v1,a2=v2)的形式
lambda 函數(shù)是匿名函數(shù),用來定義沒有名字的函數(shù)對象,lambda 關(guān)鍵字后就是逗號分隔的形參列表,冒號后面是一個表達式,表達式求值的結(jié)果為 lambda 的返回值.
9.好吧,開始類了.類這個我應(yīng)該在一塊兒停留了很久,因為剛開始的時候看錯了,那些常規(guī)方法把它當作了是自己實現(xiàn)的,就感覺怎么會這樣呢.在看一遍的時候恍然大悟啊,不細心的錯.額,不廢話了,進入主題.
1)類的實例化,我很欣賞這樣的說法:把類當作一個函數(shù)去使用.
2)類的初始化:__init__在類的實例創(chuàng)建后被立即調(diào)用。注意:非結(jié)構(gòu)函數(shù),因為對象在調(diào)用 __init__ 時已經(jīng)被構(gòu)造出來了.當定義你自已的類方法時,你必須 明確將 self 作為每個方法的第一個參數(shù)列出,包括 __init__。當從你的類中調(diào)用一個父類的一個方法時,你必須包括 self 參數(shù)。但當你從類的外部調(diào)用你的類方法時,你不必對 self 參數(shù)指定任何值;你完全將其忽略,而 Python 會自動地替你增加實例的引用。
3)類的靜態(tài)變量:
class A:
y = 2
print A.y
對象可以直接訪問類的靜態(tài)成員添加一個非靜態(tài)成員y,但是對象不能為類的靜態(tài)成員賦值
4)私有成員:
python中沒有嚴格意義上的私有成員,屬性的名字以兩個下劃線開始.專有的方法是前后都有兩個下劃線.
5)類的繼承:
如果有同名函數(shù),子類會覆蓋父類的方法.python中不支持重載,支持多繼承.
6)類的自省
10.數(shù)據(jù)庫部分
使用的是小型數(shù)據(jù)庫SQLite,和大多數(shù)的數(shù)據(jù)一樣有著差不多一樣的操作.
1)先將SQLite作為名為sqlite3的模塊導(dǎo)入.
2)創(chuàng)建一個數(shù)據(jù)庫文件的連接
3)獲得連接的游標,執(zhí)行SQL語句.
4)每次修改數(shù)據(jù)庫之后進行提交,而不是在準備關(guān)閉時才提交,準備關(guān)閉數(shù)據(jù)庫使用close方法.
以上差不多就是學習python一個星期的總結(jié),盡然花費了一上午的時間.好吧,去陶導(dǎo)那兒領(lǐng)任務(wù),準備開始這個星期了.....以后要早點兒作總結(jié).