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