1. 程式人生 > >python三-----基礎語法

python三-----基礎語法

 

注意:(1)函式可以傳任意型別的引數,但是一旦要保證合法操作

 

一、語句和變數

1、語句折行

(1)\讓使用者知道解析的是那行程式碼沒有寫完,在下行繼續讀。換行

(2)任何用(),[],{}括起來的程式碼,都是一個程式碼塊

2、對於字串來說,三引號''' '''可以換行,單引號和雙引號不能換行

3、使用 ; 可以把多個語句寫到同一行. 但是強烈不建議這麼做。

二、縮排規範:

1、Python中使用縮排表示語句塊

2、同一個語句塊中的程式碼必須保證嚴格的左對齊(4個空格為一組)(左邊有同樣數目的空格和製表符)。不要使用製表符進行縮排,不同的平臺製表符代表的大小不同,可能會產生差異

三、賦值

1、多重賦值

2、多元賦值:多個變數賦不同的值

交換兩個元素的值

3、作用域和生命週期

(1)Python中, def, class, lamda(我們後⾯面會講) 會改變量的作用域

(2)if, else, elif, while, for, try/catch 不會改變量的作用域

a、說明了函式內部宣告的變數在類外不能訪問

 b、說明了函式外部宣告的變數在類內可以訪問

(3)內建函式globals()返回了全域性作用域下都有哪些變量, 內建函式locals()返回了區域性作用域下都有哪些變量

關於Python的變量的生命週期, 這個不需要程式猿操心, Python提供了垃圾回收機制自動識別一個變量的生命週期是否走到盡頭, 並自動釋放空間

(4)return關鍵字函式返回幾個值,就要用幾個返回值去接收:可以使用變數或者佔位符使數量相同,把返回值依次取出來

改進:


4、特殊識別符號

(1)Python使用下劃線(_)作為變量的字首和字尾, 來表示特殊的識別符號。私有化之後,不能被別的檔案訪問。我們也可以強行訪問。

(2)_xxx表示一個 "私有變量", 使用 from module import * 無法匯入。

(3)前後都有_的變數一般是系統定義的名字。我們自己在給變數命名時要避免這種風格,防止和系統變數衝突。

5、文件字串

(1)單行註釋:#

(2)多行註釋:使用三引號('''/''')在函式/類開始位置表示。這個東西也被稱為文件字串。這種註釋的方式應該寫在函式的第一行,如果不是第一行就會出現錯誤。

a、列印函式的說明屬性:

b、用內建函式進入幫助模式(此種方式打印出了函式的函式名,作用域,結束標誌)

c、如果不在第一行寫註釋,則不能正確顯示

(3)函式的註釋:在函式的開頭聲明瞭函式的功能和接收的含義,以及返回的值。

6、模組文件:不光一個函式/類可以有一個文件字串,一個模組也同樣可以

四、物件和型別

1、一個完整的python物件,必須包含以下幾個方面:

a、身份: 每一個物件都有一個唯一的身份標識自己. 實⽤用內建函式id可以看到這個標識的具體的值。

型別: 物件的型別決定了物件儲存什麼樣的值, 可以進行什麼樣的操作, 以及遵守什麼樣的規則. 實用內建函式type可以檢視物件的型別. 本質上就是把物件分類。

值: 表示物件中具體儲存的內容. 有些物件的值可以修改, 有些物件的值不能修改, 這個稱為物件的 "可變性"。

元組和字串初始化之後都不能改變它的值

Python中任何型別的值其實都是一個物件(判定一個東西是不是物件, 就嘗試用id取一下看能否取到)。100 這樣的字面值常量, 也是物件; 一個字元串, 也是物件; 一個函式, 也是物件; 一個型別(type函式的返回值), 其實也是物件; 一個模組, 還是物件;

python中自動接收與回收聲名週期的變數(引用計數原則)

2、Python有⼀一個特殊的型別, 稱為NoneType. 這個型別只有⼀一個物件, 叫做None

(1)NoneType類似於C語言中的void 

(2)None類似於C語言的空指標NULL 

(3)None這個物件沒啥有用的屬性, 它的布林值為False

布林值為NULL的:

None 

False 

所有值為0的數字(0, 0.0, 0.0 + 0.0j) 

"" (空字串串)

() (空元組) 

{} (空字典)

其他情況下, 這些內建物件的布林值就是True。

3、物件值得比較

(1)所有內建型別物件都可以進行比較操作來進行值比較 (在python2中不同得型別也可以進行比較,在python3中只有相同得型別才可以進行比較)

以下是在python2中得出得結論:

(2)比較運算的結果是True或者False

(3)比較運算子包括 ==, !=, <, >, <=, >=

4、物件身份得比較

(1)可以使用id這個內建函式來比較,如果id得值相同,說明指向同一個物件‘

(2)可以通過is關鍵字,位元組進行判定

(3)提供了is not可以直接判定兩個變數名是否指向不同得物件

5、物件型別得比較

(1)兩個物件比較型別是否相同,可以使用內建函式type

(2)使用isinstance

 

6、型別工廠函式

 

(1)不能把list強制型別轉化為dict

 

 

(2)元組可以構建成字典

 

 

(3)可變物件必須是鍵值對,才能轉化為字典

 

 

(4)list裡面也是list

 

總結:list的強制型別轉換,需要關注:a、引入的物件必須是可變的物件;b、迭代的每一個元素裡面只有兩個值,組成鍵值對,一旦不能正常轉換為鍵值對,就會報錯

7、python不支援得型別:

a、char, byte: 可以使用長度為1的字元串, 或者整數代替; 

b、指標: Python替你管理記憶體, 雖然id()返回的值接近於指標的地址, 但是並不能主動去修改; 

c、int/short/long: 以前版本的Python中也是區分int和long的, 但是後來統一在一起了; 

d、記住Python中的整數表示的範圍,只取決於你機器器記憶體的大小. 

e、float/double: Python的float其實就是C語言的double. Python設計者認為沒必要支援兩種浮點數。

五、數字和運算:

1、常用內建函式/模組

(1)abs:求絕對值函式:接收一個數,返回一個數得絕對值(不能是字串,只能是數字)

(2)divmod(商取餘):兩個引數:被除數和除數,返回值是商和餘數組成得元組

或者採用兩個變數將這兩個數接受起來

(3)round(x,y)接收兩個引數:第一個引數是要處理的浮點數,第二個引數是保留多少個小數

存在數學庫:

但是,pi值最為一個常量儲存在庫中,存在一個精度範圍,pi在庫中儲存了11位,不是一個無限不迴圈小數:

(4)str強制型別轉換:

(5)sorted 四個引數 第一個引數為可迭代物件(單一物件不用進行排序);第二個引數是cmp代表了排序方法(是一個函式,接收兩個引數,返回一個值);第三個引數key:也是一個排序方法(是一個函式,接收一個引數,返回一個值,根據這個值進行排序);第四個引數:reverse布林值,預設為False,是增序。後面三個引數可以不傳實參,使用預設值。【核心引數是可迭代物件】

使用預設值,排序順序是從大到小

b、指定排序順序

c、指定第二個引數

d、key關鍵字:

六、條件和迴圈

1、同級結構保持左對齊,就能搭配在一起。if的巢狀if語句,只要保持左對齊,就能對應相應那一層的if語句

 

2、條件表示式

3、和迴圈搭配的else(else不僅可以和if搭夥,還能和while、for搭夥)

A、和for迴圈搭配

此函式遍歷結束之後一定會走else,如果沒有完整的遍歷一遍for迴圈,則不執行

B、和while迴圈搭配

 

在while迴圈中,如果在中途被打斷,也不能正確的輸出

4、關鍵字賦值:可以把值賦值給指定的引數

函式,未給定一個值的時候,預設使用預設值

a、傳預設值

 

 

 

b、賦值可以賦值給指定的引數

 

 

python不支援函式過載。函式的引數不止可以是整數、浮點數、小數,還可以是一切指定的物件[],(),{},甚至可以是函式

 

 

函式既可以作為函式的引數,也可以作為函式的返回值

 

 

 

 

有的引數有預設值,有的引數沒有預設值的時候,有預設值的引數應放在後面、沒有預設值的引數寫在前面

 

七、引數組(可變長引數組

可變長引數組:通過將引數名前加一個*號,*之後的內容表示是一個元組

 

 

條件:join函式做字串拼接,接受可迭代物件,然後把字串元素拼接起來

(1)可遍歷,也叫可迭代物件

 

拼接字串不能是非字串,必須是可以拼接的物件

 

 

(2)物件元素支援字串化操作

 

 

前面加兩個*,表示字典(**代表把不定數額的引數轉化成dict字典)

 

 

 

(3)使用 \t 分割的行文字, 可以很方便的和linux上的一些文字處理工具搭配使用。 比如cut, sort, awk等. 通過在引數名前加兩個星號 **, 星號後面的部分表示傳入的引數是一個字典.。一個*代表會把傳進去的引數組裝成一個元組tuple。這時候呼叫函式就可以按照關鍵字引數的方式傳參了。
有幾個鍵值對寫幾個鍵值對,每個鍵值對之間用逗號分隔開。 

 

 

(4)函式的返回值

 

 

a、通過return關鍵字返回一個物件.

 

 

 

 

b、如果沒有return語句句, 則返回的是None物件.

 

 

 

c、可以同時返回N個物件, 通過 , 分割(本質上是在返回一個元組).

 

 

把元組中對應的值取出來

 

 

(5)函式的內建屬性:函式也是一個物件, 通過內建函式 dir 可以看到一個函式中都有哪些屬性。

 

python自帶的核型變數,前後加上兩個下劃線

 

 

 

 

 

函式可以作為函式的引數,函式裡面還可以巢狀函式,但是超過了函式的作用域,則會出現錯誤