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