第 2 章 Python3 編程的基礎(上)

一、Python 程序的構成

1. Python 程序由模塊組成。一個模塊對應 python 源文件,一般後綴名是:.py。 
2.  模塊由語句組成。運行 Python 程序時,按照模塊中語句的順序依次執行。 
3.  語句是 Python 程序的構造單元,用於創建對象、變量賦值、調用函數、控制語句等。

二、代碼的組織和縮進

縮進時,幾個空格都是允許的,但是數目必須統一。我們通常採用“四個空格”表示一 個縮進。
同時,也要避免將“tab 製表符”或者 tab 與空格混合的縮進風格。目前,常用的編輯 器一般設置成:tab 製表符就是 4 個空格。 
Python 官方推薦的 PEP-8 代碼風格詳細說明。

三、使用註釋

“#” 單行註釋
“''' 內容 '''” 可以註釋多行

四、使用\行連接符

    一行程序長度是沒有限制的,但是爲了可讀性更強,通常將一行比較長的程序分爲多行。
這時我們可以使用\行連接符,把它放在行結束的地方。Python 解釋器仍然將它們解釋爲同 一行。

五、對象

Python 中,一切皆對象。每個對象由:標識(identity)、類型(type)、value(值) 組成

1. 標識用於唯一標識對象,通常對應於對象在計算機內存中的地址。使用內置函數 id(obj) 
可返回對象 obj 的標識。
2. 類型用於表示對象存儲的“數據”的類型。類型可以限制對象的取值範圍以及可執行的 操作。
可以使用 type(obj)獲得對象的所屬類型。
3. 值表示對象所存儲的數據的信息。使用 print(obj)可以直接打印出值。 

對象的本質就是:一個內存塊,擁有特定的值,支持特定類型的相關操作

示例:

>>> a = 3
>>> id(a)
1670212688
>>> type(a)
<class 'int'>
>>> a
3
>>> type(3)
<class 'int'>
>>> id(3)
1670212688

**此時的變量“a”存儲的是對象“3”的地址,所以變量是對象的引用**

示意圖:
變量通過地址引用了對象

六、引用

    在 Python 中,變量也成爲:對象的引用。因爲,變量存儲的就是對象的地址。 變量通過地址引用了“對象”。 
    變量位於:棧內存(壓棧出棧等細節,後續再介紹)。
    對象位於:堆內存。 ·
    Python 是動態類型語言 變量不需要顯式聲明類型。根據變量引用的對象,Python 解釋器自動確定數據類型。
    Python 是強類型語言 每個對象都有數據類型,只支持該類型支持的操作。

示意圖:
堆棧示意圖

七、Python 標識符命名規則

命名規則

變量的聲明和賦值

    變量的聲明和賦值用於將一個變量綁定到一個對象上,格式如下: 
變量名 = 表達式 最簡單的表達式就是字面量。比如:a = 123 。 
運行過程中,解釋器先運行右邊的表達式, 生成一個代表表達式運算結果的對象;
然後,將這個對象地址賦值給左邊的變量。
   變量在使用前必須先被初始化,不然會報錯 *** is notdefined

刪除變量和垃圾回收機制

可以通過 del 語句刪除不在使用的變量。
>>> a=123 
>>> del a 
>>> x 
    Traceback (most recent call last): 
File "<pyshell#20>", line 1, in <module> x NameError: name 'x' is not defined
**如果對象沒有變量引用,就會被垃圾回收器回收,清空內存空間。**

鏈式賦值

鏈式賦值用於同一個對象賦值給多個變量。 x=y=123 相當於:x=123; y=123 

系列解包賦值

系列數據賦值給對應相同個數的變量(個數必須保持一致) >>> a,b,c=4,5,6 相當於:a=4;b=5;c=6

常量

Python 不支持常量,即沒有語法規則限制改變一個常量的值。
我們只能約定常量的命名規 則,以及在程序的邏輯上不對常量的值作出修改。
	 >>> MAX_SPEED = 120 
	 >>> print(MAX_SPEED) 120 
	 >>> MAX_SPEED = 140 #實際是可以改的。只能邏輯上不做修改。 
	 >>> print(MAX_SPEED) 140

八、最基本內置數據類型和運算符

每個對象都有類型,python 中最基本的內置數據類型:
  1. 整型整數,2345,10,50
  2. 浮點型 小數,3.14 或者科學計數法 314e-2
  3. 布爾型 表示真假,僅包含:True、False
  4. 字符串型 由字符組成的序列。 “abc”,”xyz”,“中國”
數字和基本運算符
Python 支持整數(如:50,520)和浮點數(如:3.14,10.0, 1.23e2),我們可以對數字做如下 運算。

運算符

注:0不能做除數,不然或拋出異常
使用 divmod()函數同時得到商和餘數: >>> divmod(13,3) (4, 1)
使用 int()實現類型轉換:
1. 浮點數直接捨去小數部分。如:int(9.9)結果是:9 
2. 布爾值 True 轉爲 1,False 轉爲 0。 如:int(True)結果是 1 
3. 字符串符合整數格式(浮點數格式不行)則直接轉成對應整數,否則報錯。
自動轉型:
    整數和浮點數混合運算時,表達式結果自動轉型成浮點數。
    比如:2+8.0 的結果是 10.0 整數可以有多大? 
    Python2 中,int 是 32 位,可以存儲從-2147483648 到 2147483647 的整數(約± 21 億)。
Long 類型是 64 位,可以存儲:-2^63--2^63-1 之間的數值。 
    Python3 中,int 可以存儲任意大小的整數,long 被取消。
    Python3 中可以做超大數的計算,而不會造成“整數溢出”,這也是 Python 特別適 合科學運算的特點。
浮點數
    浮點數,稱爲 float。 
    浮點數用 axb^10形式的科學計數法表示。比如:3.14,表示成:314E-2 或者 314e-2。 
這些數字在內存中也是按照科學計數法存儲。 
類型轉換和四捨五入
  1. 類似於 int(),我們也可以使用 float()將其他類型轉化成浮點數。
  2. 整數和浮點數混合運算時,表達式結果自動轉型成浮點數。比如:2+8.0 的結果是 10.0
  3. round(value)可以返回四捨五入的值
    注:但不會改變原有值,而是產生新的值
增強型賦值運算符
運算符+、-、*,/、//、**和%和賦值符=結合可以構成“增強型賦值運算符”。 a = a + 1 等價於: a +=1

增強型賦值運算符
注意:“+=”中間不能加空格!

布爾值
Python2 中沒有布爾值,直接用數字 0 表示 False,用數字 1 表示 True。 
Python3 中,把 True 和 False 定義成了關鍵字,但他們的本質還是 1 和 0,甚至可以和數 字相加。
比較運算符
所有比較運算符返回 1 表示真,返回 0 表示假。這分別與特殊的變量 True 和 False 等價。 
以下假設變量 a 爲 15,變量 b 爲 30:

在這裏插入圖片描述
在這裏插入圖片描述

邏輯運算符

在這裏插入圖片描述

同一運算符
同一運算符用於比較兩個對象的存儲單元,實際比較的是對象的地址。

在這裏插入圖片描述
注: is 與 == 區別:

is 用於判斷兩個變量引用對象是否爲同一個,既比較對象的地址。
 == 用於判斷引用變量引用對象的值是否相等,默認調用對象的 __eq__()方法。
整數緩存問題
    Python 僅僅對比較小的整數對象進行緩存(範圍爲[-5, 256])緩存起來,而並非是所有整數對 象。
需要注意的是,這僅僅是在命令行中執行,而在 Pycharm 或者保存爲文件執行,結果是不一樣 的,
這是因爲解釋器做了一部分優化(範圍是[-5,任意正整數])。 ·
總結
1、is 比較兩個對象的 id 值是否相等,是否指向同一個內存地址;
2、== 比較的是兩個對象的內容是否相等,值是否相等; 
3、小整數對象[-5,256]在全局解釋器範圍內被放入緩存供重複使用; 
4、is 運算符比 == 效率高,在變量和 None 進行比較時,應該使用 is。
基本運算符
我們在前面講解了“+”、“-”、“*”、“/”、“//”、“%”等運算符,這裏我們繼續 講解一些其他運算符,並進行學習和測試。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

複合賦值運算符
複合賦值可以讓程序更加精煉,提高效率。

複合賦值運算
注:與 C 和 JAVA 不一樣,Python 不支持自增(++)和自減(–)

學習來自:北京尚學堂高琪老師 Python 400集

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章