第3章 文法和程式設計風格
1. 語句和文法
a, #(注釋),\n(分行符號),\(表示續行),;(隔開同一行上的兩條語句),:(分隔標題列及其後續字句),
b, 不使用反斜線字元實現語句續行:一是包容器物件中的元素在多行之間被斷開;二是分行符號包含在背闊在三個單引號之間的字串之中
2. 變數分配
a, 賦值操作實際分配的是對該對象的引用線索;Python支援增量賦值,把一個對象賦值給多個變數,表列方式賦值。
3.標識符
a, 28個關鍵字。一套內建字。建議:最好不要用底線作為標識符的起始字元
4.程式設計風格準則
a,文檔。obj.__doc__動態檢索文檔字串(模組,類定義或者函數定義的第一個未賦值字串)
b,縮排(個人風格的選擇)。但是注意:TAB在不同平台和不同文字編輯器上概念不同。慎用。
c,模組的結構和布局:啟動語句行->模組文檔->模組匯入->變數定義->類定義->函數定義->程式主體。(注意利用__name__變數指示模組被載入方式)
5.記憶體管理
a,變數定義:變數及變數類型不必提前定義。對象在建立時(也就是在賦值時)先由解譯器建立一個對象,它的類型是根據指派陳述式右邊的運算元所使用的文法來確定的。對象建立好以後,它的一個引用線索被賦值給指派陳述式左邊的變數。
b,程式員不必關心”記憶體管理“
6.Python的”廢棄物回收“機制(讓我想起了cocos2d-x的reatain和safe_release機制)
a,引用計數:追蹤記錄每個對象身上有多少個引用。當一個對象被建立和(它的引用)被賦值時,它的初始引用記數是1
b,增加引用計數(為對象建立一個新的引用,又稱別名):其他變數也被賦值到同一個對象,對象作為調用其他代碼部分(比如函數,方法或者類的執行個體等)的參數被傳遞時;對象作為一個序列或映射圖的成員被賦值時。
c,減少引用計數:明確地出現在del語句裡;被賦值(重新賦值)為另外一個對象;超出作用範圍。當引用計數減少至0的時候,該對象成為不可到達和不可訪問的。
第四章 對象
1.Python中的對象
a,對象中的三種特性:實體(區分對象的標識符,id()可獲得);類型(用type()可查);值
2.標準資料類型
a,標準資料類型(基礎資料型別 (Elementary Data Type)):四種數字類型,字串,列表(list),表列(tuple),字典(dictionary)。與Java不同,標準類型不是類。
b,內建資料類型:類型(type),空類型(none),檔案,函數,模組,類,類執行個體,方法
3.type類型和type()內建函數
a,把類型看做對象,定義對象所繼承的一系列行為和特性
b,None類似於C中的NULL,Perl中的undef, Java中的Void型和null值。None沒有任何屬性,賦值為false。
4.內部資料類型
a,代碼對象(code),架構(frame),追蹤記錄(traceback),序列切片對象,Ellipsis對象,Xrange對象
b,標準類型的對象都可進行真假值檢查以及和同類型的其他對象進行比較
c,Python中被定義為假值:None,任何形式的0值(0,0.0,0L,0.0+0.0j),對象為空白(Null 字元串”“,空列表[],空表列(),空字典{})。其餘的情況思維真值
d,類的執行個體:如果__nonzero__()或者__len__()返回零值,就認為假false。
5,標準操作符
a,字串之間的比較為依次比較處於同一位置的字元,支援一個語句裡使用多個比較,取值時按從左至右的順序進行,等價於用and串連
b,對象實體比較:用is和is not 測試兩個變數是否指向同一個對象
c,布林運算式:and(交), or(並) 和not(否)
6,標準內建函數
a,cmp()傳回值類似c中的strcmp()。repr()和‘’獲得一個對象”正式“的字串表示形式,效果一樣。str()擷取一個對象的可列印字串表示形式。
突然發現Python核心編程第一版太老了,Python增加了很多類型。比如Boolean類型。要找Python第二版看看
附:
>>> dir(types)
['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__', '__file__', '__name__', '__package__']