Python第一周 基礎文法和概念

來源:互聯網
上載者:User

標籤:python 概念

執行Python命令的兩種方式

1. 互動式模式下執行

安裝好了Python程式以後,在windows的命令列或linux、mac的終端介面輸入python命令即可進入python的互動模式,在這個模式裡輸入python語句,按斷行符號即可返回執行結果。一般用於調試。

2. 指令碼執行

在.py檔案中寫好python語句,然後使用python script.py這樣的格式來執行python指令碼,或者在linux平台上給指令碼添加可執行許可權,使用絕對路徑或相對路徑的方式來執行指令碼。


Python程式的執行流程

我們編寫的.py檔案稱為python指令碼,在我們使用python命令執行python指令碼的時候,python解譯器首先將python指令碼中的語句翻譯成一組位元組碼命令,儲存在指令碼相同目錄下的__pycache__目錄下,以.pyc結尾的檔案中,然後再將python位元組碼發送到PVM(Python virtual machine,python虛擬機器)中,由PVM執行並返回最終的結果。PVM是Python程式的一部分。

Python程式的基本概念:

1. 程式由模組構成

2. 模組包含語句

3. 語句包含運算式

4. 運算式建立並處理對象


一. 內建對象

數字、字串、列表、字典、元組、檔案、集合、其他類型(type,None、bool)、編程單元類型(函數、模組、類)、與實現相關的類型(編譯的代碼堆疊追蹤traceback)。

內建對象的特點:

  • 內建對象使程式更容易編寫,對於簡單的任務,使用內建類型就可以完成工作。

  • 內建對象是擴充的組件,可以使用內建資料類型來組合出更複雜的資料類型。

  • 內建對象比自訂的資料結構更有效率,內建對象一般用C語言實現,效率更高。

  • 內建對象是語言標準的一部分,因此對不同平台的相容性更好。


常見的內建對象:

1. 數字

Python支援的數字類型有整數、浮點數、複數、八位元、固定精度的十進位數、十六進位數、帶分子和分母的有理分數等。某些特定的數字可能需要特定的模組或第三方庫的支援。

數字裡的常用模組math、random,前者用來提供數字裡常見的常量例如pi、e等,後者用於提供隨機數產生器和隨機數選取器。


2. 字串

用來記錄文本資訊,再Python中作為序列的一個子集,支援序列的常見操作,例如len()函數、索引、分區等。

字串的一個重要特性——不可變性,建立後就不能就地改變。

字串內建的一些常見方法:find()、replace()、split()、rstrip()、格式化操作等。

r開頭的字串表示字串自身,沒有特殊含義,逸出字元在這樣的字串中不起作用。

u開頭的字串表示unicode字串,Python3.x預設支援Unicode字串,不需要加u。

re模組用於處理字串的模式比對。


3. 列表

列表是這個語言提供的最通用的序列,是一個任意類型的對象的位置相關的有序集合,沒用固定大小,大小可變,可根據索引對元素複製,支援各種列表的方法進行調用。

支援常見序列操作,例如索引、分區等。

列表內建方法append()、sort()、reverse()、pop()等。


4. 字典

字典不是序列,而是一種映射,通過鍵來進行儲存,將鍵映射到值。字典的鍵具有唯一性,而鍵對應的值可以是多種的對象,例如字串、數字、列表、集合,甚至是字典本身。


5. 元組

相當於不可變列表,也是一種序列,但是具有不可變性。也支援混合和嵌套多種元素。


6. 檔案

在Python中,檔案被當作對象來處理。檔案對象是Python代碼對電腦上外部檔案的主要介面。沒有特定的常量文法建立檔案。要建立一個檔案對象,需要調用處理檔案對象的open函數並傳給它一個檔案名稱和檔案處理模式字串。

檔案對象支援的方法read、readline、readlines、write、writelines、seek、close等。

額外的類檔案工具:管道(PIPE)、先進先出隊列(FIFO)、通訊端(socket)、通過鍵訪問檔案、對象持久、基於描述符的檔案、關聯式資料庫和物件導向資料庫介面。


7. 集合

不是映射也不是序列,是唯一的不可變的對象的無序集合。通過調用內建函數set函數建立,或者使用Python3.0中新的集合常量和運算式建立,支援一般的數學集合操作,集合更像是一個無值的字典的鍵。

X = set(‘spam‘)

Y = {‘h‘, ‘a‘, ‘m‘}

上面是兩種建立集合的方式。

這些對象很多都支援對象特有的方法,具體內容會在單獨介紹對象時講解。在python命令列介面中,有幾個命令可以用來查看對象的協助資訊,分別時:

  • dir(obj) 方法可以看到對象的所有屬性

  • ord(obj)方法查看對象的ASCII編碼

  • help(obj)或 help(obj.fn) 查看對象的協助資訊或者對象方法的協助資訊。

上面介紹的都是Python核心物件類型,以及可以對它們進行的一些簡單操作。


二、動態類型

1. 常量/變數

  • 字面常量

  • 變數,是一個指標,指向一塊分配好的記憶體。

    • 變數的建立,給變數賦值時即建立了該對象

    • 變數的類型(type),變數沒有類型,類型是和變數相關聯的對象的屬性。變數的指標指向不同的對象時,就關聯到不同類型的對象上。

    • 變數的命名規則

    1. 只能包含字母、數字和底線

    2. 只能以字母或者底線開頭

    3. 不能是Python解譯器的保留字

對象的垃圾收集:當沒有指標指向一個對象時,對象的引用計數器就會置零,此時對象所佔用的記憶體空間就會放入到自由記憶體空間,等待後面的對象使用。這個機制的好處是不用考慮釋放記憶體空間。

對象的引用:將一個不可變對象,如數字、字串賦值給一個變數時,改變對象,比如說將數字+1,或者將字串加上一個新的字串,此時實際執行的是產生一個新的數字對象或字串對象,然後將變數的指標重新指向新的對象。

共用引用:將一個可變對象賦值給變數時,改變可變對象時,並不會改變這個變數的指標指向。因此當兩個相同的變數指向同一個可變對象時,其中一個變數進行了修改對象的操作,另一個變數的值也會發生改變。例如:

>>>L1=[1,2,3]

>>>L2=L1

>>>L2[0]=24

>>>L2

[24,2,3]

>>>L1

[24,2,3]

此時如果不想因為L2改變了列表的值而導致L1也發生改變,應該使用拷貝(copy和deepcopy方法)。在列表中講到該知識點。


is和 ‘==‘,只有兩個變數的指標指向同一塊記憶體時,兩個變數才是is關係,沒有指向同一塊記憶體,但是兩個變數指向的對象完全相同,此時兩個變數才是 ‘==‘ 關係。

補充內容:變數與對象之間的關係

  • 變數是一個系統資料表元素,擁有指向對象的串連的空間,即儲存指標的空間。

  • 對象是系統分配的一塊記憶體,有足夠的空間去表示它們所代表的值,一個對象都有兩個標準的頭部資訊,一個類型標識符去標識這個對象的類型,一個引用計數器,來決定是不是可以回收這個對象

  • 引用是自動形成的從變數到對象的指標s


2. 運算子/運算式

算術運算子:+、-、*、/(py2和py3中意義不一樣)、//、%、**;

比較子:>,<,=,!=,>=,<=,==;

邏輯運算子:and、or、not

  • 參與運算的成員只能是bool類型,或者可以隱式轉換為bool類型的類型(0,1);

  • and兩正得正,兩負得負,一正一負均為負

  • or 兩正得正,兩負得負,一正一負均為負

  • not 正得負,負得正

  • 短路操作:總是從左至右的計算,一旦能夠決定運算式最終的值,將立刻停止計算並返回。即當使用and操作符時,左邊的值為負則立即結束運算,使用or操作符時,當左邊為正時,立即結束運算。當這種情況下需要運算操作符兩邊的運算式時,可以將運算子兩邊的運算式用臨時變數代替。

位元運算符:

  • bin(num) 返回num的二進位表示

  • &(按位與)、|(按位或)、^(按位異或,同為1或同為0時為0,不同時為1)、~(按位取反~x=-(x+1))

  • >>,<<(左移和右移操作符)

其他運算子:

  • 賦值運算子=

  • 成員運算子in(內建資料結構的內容)

  • 身份運算子is、is not(物件導向的內容)

運算子的優先順序:運算子根據優先順序來計算。

  • 算術運算子高於比較子

  • 比較子高於邏輯運算子

表示式是由常量/變數和運算子組成的公式。


3. 程式控制結構

順序結構:自上而下執行的運算式組合;

分支結構:

  • 單分支:if condition: block

  • 雙分支:if....else....

  • 多分支:if...elif...else

分支結構裡永遠只有一個分支會被執行

迴圈結構:

  • for element in iterator: block

  • while condition: block

  • break、continue,break用於提前結束迴圈,continue用於跳過當前迴圈剩下的部分。

* 迴圈體中絕對不要修改可迭代對象。

for _ in range(0,3)  #表示不使用 _ 這個變數,只是進行三次迴圈。

嵌套結構:if、for、while等多種結構結合的結構。

0、空的內建結構、None bool的結構都是False,非0、非空的內建結構都是True


本節知識點:

1. 知道Python中常見的內建類型和這些內建類型常用的方法(len、索引、分區等)。

2. 掌握Python中建立變數的規則,變數引用不同對象時,變數和對象之間的關係。包括以下幾點:

  • 變數命名規則

  • 變數引用不可變對象時,更改對象之後,變數指標的變化

  • 變數引用可變對象時,更改對象之後,變數和對象的關係。

3. 熟悉簡單的運算子操作。

4. 熟悉Python中基本的控制結構。


本文出自 “無飛天下” 部落格,請務必保留此出處http://hf1208.blog.51cto.com/8957433/1881621

Python第一周 基礎文法和概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.