[筆記] Python 核心編程 第三章

語句與語法

  • 井號(#) 表示之后的字符都是注釋
  • 換行(\n) 標準的行分隔符
  • 反斜杠(\) 繼續(xù)上一行
  • 分號(;) 將兩個語句連接在一起
  • 冒號(:) 將代碼塊的頭和體分開
  • 語句(代碼塊) 用縮進塊的方式體現(xiàn)
  • 不同的縮進深度分隔不同的代碼塊
  • Python 文件以模塊的形式組織

變量賦值

Python語言中,等號(=)是主要的賦值操作符(其他的是增量賦值操作符)
注意,賦值并不是直接將一個值賦給一個變量。在Python語言中,對象是通過引用傳遞的。在賦值時,是將該對象的引用(并不是值)賦值給變量

與C語言不同,賦值語句不是一個表達式,不會返回值,所以下面的語句在python中是非法的

In [1]: x = 1

In [2]: y = (x = x + 1) # 賦值語句不是合法的表達式
  File "<ipython-input-2-e5f0ec7f4848>", line 1
    y = (x=x+1)
          ^
SyntaxError: invalid syntax

增量賦值
+=、 -=、 *=、 /=、 %=、 **=、 <<=、 >>=、 &=、 ^=、 |=

注意:對于不可變對象,增量賦值和普通賦值兩者一致;但是對于可變對象(列表,字典),增量賦值和普通賦值存在差異,要特別注意。

對于不可變對象,A = A + B 和 A += B 兩種賦值都會將A指向一個新的對象,即id(A)在賦值前后會改變;對于可變對象,如List,A = [1]; A += [2, 3] A的值變?yōu)閇1,2,3] 但A指向的List對象不變,即賦值前后id(A)不變;A = [1]; A = A + [2, 3] A的值也變?yōu)榱薣1,2,3],但A指向的List對象變了,即賦值前后id(A)的值變了

多重賦值
x = y = z = 1

多元賦值

In [3]: x, y, z = 1, 2.0, 'a string'

In [4]: x
Out[4]: 1

In [5]: y
Out[5]: 2.0

In [6]: z
Out[6]: 'a string'

多元賦值可以用于變量值互換

In [7]: x, y = 1, 2

In [8]: x
Out[8]: 1

In [9]: y
Out[9]: 2

In [10]: x, y = y, x

In [11]: x
Out[11]: 2

In [12]: y
Out[12]: 1

內(nèi)存管理

  • 變量無須事先聲明;
  • 變量無須指定類型;
  • 程序員不用關心內(nèi)存管理;
  • 變量名會被“回收”;
  • del語句能直接釋放資源;

為了追蹤內(nèi)存中的對象,Python使用了引用計數(shù)這項技術。Python內(nèi)部記錄著所有使用中的對象各有多少個引用。一個內(nèi)部跟蹤變量,稱為一個引用計數(shù)器。每個對象各有多少個引用,簡稱引用計數(shù)。

當對象被創(chuàng)建時,就創(chuàng)建了一個引用計數(shù),當這個對象不再需要時,也就是說,這個對象的引用計數(shù)變成0時,它被垃圾回收(嚴格來說這不是100%正確,不過現(xiàn)階段你可以這么理解)

增加引用計數(shù)
當對象被創(chuàng)建并(將其引用)賦值給變量時,該對象的引用計數(shù)就被設置為1.
下面這些情況對象的引用計數(shù)會增加

  • 對象被創(chuàng)建 (例: x = 3.14 )
  • 另外的別名被創(chuàng)建 (例: y = x )
  • 作為參數(shù)傳遞給函數(shù) (例: foobar(x) )
  • 成為容器對象的一個元素 (例: myList = [123, x , 'xyz'] )

減少引用計數(shù)
當對象的引用被銷毀時,會減少引用計數(shù)。
下面這些情況對象的引用計數(shù)會減少

  • 一個本地引用離開了其作用范圍。 比如 foobar() 函數(shù)結束
  • 對象的別名被顯式銷毀。比如 del y
  • 對象的一個別名被賦值給其他對象。比如 x = 'xyz'; y = x; x = 123,當123被賦值給x時,'xyz'計數(shù)減1
  • 對象被從一個容器對象中移除。比如 myList.remove(x)
  • 容器對象本身被銷毀。比如 del myList
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容