Python有如下的基本規則: #后表示注釋 \n是行分隔符 \是繼續上一行,將過長語句分開 ;分號將兩個語句連接在一行中 :冒號將代碼頭和體分開 代碼塊用縮進塊的方式體現 不同縮進深度分隔不同的代碼塊 Python文件用模塊的形式組織
縮進推薦風格,縮進四個空格寬度,避免使用制表符。
賦值語句 Python中,主要賦值運算符是等號( = ) 賦值不是直接將一個值賦給一個變量,對象是通過引用傳遞的。不管變量是新創建的還是已經存在的,都是將該對象的引用賦值給變量。
C語言中,賦值語句可以當成一個表達式,可以返回值。但在Python中,賦值語句不會返回值。這使得這樣的語句是非法的
>>> y = (x = x + 1) # assignments not expressions! File "<stdin>", line 1 y = (x = x + 1) ^ SyntaxError: invalid syntax >>> if (a = 3): SyntaxError: invalid syntax
這就避免了判斷語句中,將 == 符號誤寫成 = 的問題。是一個很好的功能。
同樣的Python中鏈式賦值並沒有問題。
>>> y = (x = x + 1) # assignments not expressions! File "<stdin>", line 1 y = (x = x + 1) ^ SyntaxError: invalid syntax >>> if (a = 3): SyntaxError: invalid syntax
同時還有增量賦值符
+= -= *= /= %= **= <<= >>= &= ^= |=
相對於普通賦值不僅僅是寫法改變,最有意義的變化是第一個對象僅被處理一次。 Python不支持x++或--x這樣的前置/后置自增/自減運算 多元賦值
>>> x, y, z = 1, 2, 'a string' >>> x 1 >>> y 2 >>> z 'a string' >>> x, y, z (1, 2, 'a string')
賦值時將等號兩邊的對象都看成元組
使用多元賦值的方法可以不使用中間變量直接交換表量的值
>>> x , y = 1, 2
>>> x, y
(1, 2) >>> x, y = y, x >>> x, y (2, 1)
專用下划線標識符
_xxx 不用'from module import *'導入 __xxx__系統定義名字 __xxx 類中私有變量名
風格提示: 避免用下划線作為變量名的開始 下划線對於解釋器有特殊的意義,而且是內建標識符所使用的符號,所以應避免下划線作為變量名的開始。一般來講_xxx被看做私有的,在模塊或類外不可使用,所以當變量是私有時,用_xxx是很好的習慣。因為__xxx__有特殊含義,所以普通變量命名應避免這種風格
關於變量的賦值部分 Python的變量的賦值都是引用。這設計到它的內存管理機制。Python使用了引用計數這一簡單技術。內部記錄着所有使用中的對象各有多少引用。 當對象被創建時,就創建一個引用計數,當對象不背需要時,即引用計數為0時就被垃圾回收。 當對象被創建並賦值給變量時,該對象的引用計數就被設置為 1 當同一個對象又被賦值給其它變量時,或者作為參數傳遞給函數,方法或類實例時,或者被賦值為一個窗口對象的成員時,該對象的一個新的引用或者稱別名,就被創建(引用計數加1)
x = 2
y = x
第一句創建了一個整數對象並引用賦值給x。x是第一個引用,該對象的引用計數設置為 1 。當y = x 語句執行時,並沒有為y創建一個新對象,而是該對象的引用計數增加了1次。這是引用計數的增加。同樣還有作為參數被函數調用,或者對象被加到某個容器對象中時。 而當變量被賦值給另一個對象時,原對象的引用計數也會自動減 1
foo = 3
foo = '123'
當3被創建賦值給foo時,引用計數是1 。 當它重新賦值給對象'123'時,3的引用計數自動減1 當本地引用離開了作用范圍,比如函數結束時。 對象別名被顯式的銷毀 對象別名被賦值給其他對象 對象從一個窗口對象中移除 窗口對象本身被銷毀 這幾個情況都會減少引用計數