Python常用語法看這些就夠了(上篇)


參考教程:菜鳥教程

https://www.runoob.com/python3/python3-tutorial.html

使用的開發工具是Jupyter Notebook(Anaconda)

下面我主要是介紹一些需要注意的點和練習過程:

說在前面:動手很重要

一、python基本語法

1.標識符規則:

在 Python 里,標識符由字母、數字、下划線組成。

在 Python 中,所有標識符可以包括英文、數字以及下划線(_),但不能以數字開頭。

Python 中的標識符是區分大小寫的。

注意:

以下划線開頭的標識符是有特殊意義的。

單下划線開頭 _foo 的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用 from xxx import * 而導入。

以雙下划線開頭的 __foo 代表類的私有成員,以雙下划線開頭和結尾的 __foo__ 代表 Python 里特殊方法專用的標識,如 __init__() 代表類的構造函數。

 

2.行和縮進

python中的代碼塊不適應大括號{ } 來控制類、函數以及其他邏輯判斷。python對縮進是很敏感的,它通過縮進來判斷函數或者模塊。

if True:
    print("true")
else:
    print("false")

若出現: IndentationError: unindent does not match any outer indentation level錯誤表明是縮進錯誤

 

3.多行語句在行尾使用 \ 來接下一行

句中包含 [], {} 或 () 括號就不需要使用多行連接符。

 

4.字符串表示 ‘’,“”,“““,三引號可以由多行組成。單行注釋用 #  多行注釋用三個單引號或三個雙引號。

 

5.input、print表示輸入、輸出,python中的命令-h可以查看各參數的幫助信息。

 

6.import 與 from...import

 

二、Python變量類型

1.變量賦值

Python中變量名賦值不需要進行類型聲明,變量名也不需要提前創建,變量賦值以后才會被創建(這一點和R語言類似)

 

2.多變量賦值

可以同時給三個變量賦相同的值,也可以將三個變量同時分別賦值。

 

3.標准數據類型

Python中有五個標准數據類型:Numbers(數字)、String(字符串)、List(列表)、Tuple(元組)、Dictionary(字典)

詳細內容看下面的第

 

三、Python的基本數據類型

用於存儲數據

1.Number數字

Python3 支持 int、float、bool、complex(復數)

(1)內置的 type() 函數可以用來查詢變量所指的對象類型。

(2)此外還可以用 isinstance 來判斷

(1)(2)的區別在於:

(3)Python3 中,把 True 和 False 定義成關鍵字了,但它們的值還是 1 和 0,它們可以和數字相加

(4)del語句可以刪除一些對象引用。也可以刪除單個或多個對象。

(5)Python還支持復數,復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 復數的實部a和虛部b都是浮點型。

 

2.字符串

Python中的字符串用單引號 ' 或雙引號 " 括起來,同時使用反斜杠 \ 轉義特殊字符。

(1)字符串截取:

變量[頭下標:尾下標],字符串第一個字符索引是0;

從左往右以0開始,從右往左以-1開始。

(2)字符串操作

注意不能使用索引來改變字符串內的字符。

(3)對轉義字符的說明

反斜杠(\)轉義特殊字符,如果你不想讓反斜杠發生轉義,可以在字符串前面添加一個 r,表示原始字符串:

 

3.列表List(Python內還有一些對列表操作的函數)

(1)列表是寫在方括號 [] 之間、用逗號分隔開的元素列表, 列表中元素的類型可以不相同。

(2)列表中元素的截取

①當只截取一個時,返回值是這個元素;當截取多個時,返回的是一個新的列表。

②注意選取范圍是左閉右開區間

索引值以 0 為開始值,-1 為從末尾的開始位置。

可以直接通過索引來更改列表內元素,也可以通過列表內置方法來更改。

③注意:

list可以用+進行拼接

和字符串一樣,list可以被索引和切片

python截取列表數據時,可以接收第三個參數,實現按步數截取

當第三個參數為負數時逆向讀取,可以用來翻轉字符串。

 

4.元組Tuple

(1)特點:操作元組與列表類似,不同之處在於,元組內的元組不能修改,元組寫在小括號()里,元組之間用逗號隔開,元組內的元組類型也可以不同。元組之間也可以通過+直接合並。

(2)雖然tuple的元素不可變,但是他可以包含可變的對象,比如說list列表。

(3)特別注意:構造包含0或1個元素的元組有着特殊的語法規則

 

5.集合set

是由一個或數個形態各異的大小整體組成的,構成集合的事物或對象稱作元素或是成員

基本功能是進行成員關系測試和刪除重復元素set里的內容位置是隨意的,所以不能用索引列出

(1)set的創建

①可以使用大括號{}或者set()函數來創建

②在用set函數的時候,注意,set函數最多只能接收一個參數

那么怎樣用它來創建含有多個元素的集合呢?

    向set函數的參數里,傳入含有多個元素的列表或元組均可;如果只傳入一個字符串,他會將字符串拆成一個個的字符,那么創建的集合就全是一個個的字母的集合啦

空的集合必須通過set()函數來創建;{}是用來創建空的字典的。

(2)集合之間可以進行運算,差、交、並、補等

(3)set的使用:

①去重,set自動完成

②判斷元素是否在集合中

 

6.字典dictionary(具體字典內置函數,可以百度一下)

列表是有序的對象集合,字典是無序的對象集合。兩者之間的區別在於:字典當中的元素是通過來存取的,而不是通過偏移存取。

(1)字典的實質:字典是一種映射類型,字典用 { } 標識,它是一個無序的 鍵(key) : 值(value) 的集合

(2)注意: 鍵(key)必須使用不可變類型, 在同一個字典中,鍵(key)必須是唯一的。

(3)創建字典:三種方式對比

創建空字典用{}。

(4)對字典的讀取操作

 

7.Python數據轉換

下面介紹幾個內置函數可以執行數據類型之間轉換,這些函數返回一個新的對象值,表示轉換的值。

函數

描述

int(x)

將x轉化為一個整數

float(x)

將x轉化為浮點數

comlext(real,imag)

創建復數

str(x)

將對象x轉化為字符串

repe(x)

將對象x轉化為表達式字符串

tuple(s)

將序列s轉化為元組

list(s)

將序列s轉化為列表

set(s)

將s轉化為可變集合

frozenset(s)

轉化為不可變集合

dict(d)

將d轉化為字典;d必須是一個(key,value)的元組序列

chr(x)

將一個整數轉化為字符

ord(x)

將一個字符轉化為整數

hex(x)

將x轉化為16進制形式字符串

oct(x)

轉化為八進制形式字符串

 

 

四、Python解釋器

現在Python的集成開發工具多種多樣,我現在使用的是Jupyter notebook,網頁版,高效方便。

也可以使用python自帶的IDE,有腳本編程和交互式編程兩種。

還有pycharm、Ipython等工具都很方便。

 

五、Python運算符(這里只講一些常用的)

1.算術運算符

運算符

描述

+,-,*,/ 

加減乘除

%

取模,返回除法的余數

x**y

返回x的y次方結果

//

向下取接近除數的整數,9//2=4;-5//2=-3;得到的是更小的整數

2.比較運算符(返回的是真值)

運算符

描述

==、!=

等於、不等

>、<、>=、<=

大於、小於、大於等於、小於等於

3.賦值運算符

運算符

描述

=

簡單賦值符     c = a + b 將 a + b 的運算結果賦值為 c

+=、-=、*=、/=

加減乘除賦值符    c += a 等效於 c = c + a

%=

取模賦值符    c %= a 等效於 c = c % a

**=

冪賦值符   c **= a 等效於 c = c ** a

//=

取整除賦值符   c //= a 等效於 c = c// a

:=

海象運算符(和R語言中的有點類似)

可在表達式內部為變量賦值。

4.位運算符

運算符

描述

&

按位與運算符:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0

|

按位或運算符:只要對應的二個二進位有一個為1時,結果位就為1。

^

按位異或運算符:當兩對應的二進位相異時,結果為1

~

按位取反運算符:對數據的每個二進制位取反,即把1變為0,把0變為1。~x 類似於 -x-1

<<

左移動運算符:運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。

>>

右移動運算符:把">>"左邊的運算數的各二進位全部右移若干位,">>"右邊的數指定移動的位數

5.邏輯運算符(看X的真值)

運算符

描述

and

與運算符:如果x為False,x and y 返回 False,否則返回y的計算值

or

或運算符:如果x是True,返回x的值,否則返回y的值

not

非運算符,如果x為True,則返回False,否則返回True

6.成員運算符

in、not in

 

7.身份運算符(判斷)

is 判斷兩個標識符是否引用自同一個對象

is not  判斷兩個標識符是否引自不同的對象

 

8.Python運算符的優先級

"**" > "~ +@ -@" > "*/%//" > "+-" > "<< >>"

注意:python3已經不支持<>(不等)運算符,被!=替代了。

 

六、Python條件控制

1.if判斷

(1)小例子:

(2)if嵌套

if 表達式1:
    語句
    if 表達式2:
        語句
    elif 表達式3:
        語句
    else:
        語句
elif 表達式4:
    語句
else:
    語句

 

七、Python循環語句

1.while循環語句

while(condition):
    statement

例子:

當條件永真時,會無限循環

當條件不成立時跳出循環,也可以用break來終止循環

 

2.for循環語句

(1)一般格式

for var in sequence:
    statemnet1
else:
    statement2

(2)小例子(range函數也可以指定步數,默認是整數 1)

 

3.continue關鍵字

從例子中就可以看出,continue是執行到該語句時,下面的語句不再執行,繼續執行下一個循環過程

 

八、Python 迭代器和生成器

1.迭代器: 可以記住遍歷的位置的對象。

迭代是Python最強大的功能之一,是訪問集合元素的一種方式。

迭代器有兩個基本的方法:iter() 和 next()

(1)使用Python內置迭代器

例子:

(2)迭代

(3)對自定義的類使用迭代器

把一個類作為一個迭代器使用需要在類中實現兩個方法:__iter__(),__next__()     ※注意是雙下划線!!!!

① __iter__() 方法返回一個特殊的迭代器對象, 這個迭代器對象實現了 __next__() 方法並通過觸發 StopIteration 異常標識迭代的完成(目的就是識別循環結束的情況,防止出現無限循環的情況)。

② __next__() 方法會返回下一個迭代器對象。

③小例子:

更加合理的指定迭代范圍的方式:

 

2.生成器generator:生成器就是一個迭代器

(1)定義:使用了yield的函數被稱為生成器

調用一個生成器函數,返回的是一個迭代器對象。

(2)生成器的工作流程:

    在調用生成器運行的過程中,每次遇到 yield 時函數會暫停並保存當前所有的運行信息,返回 yield 的值(相當於一個斷點), 並在下一次執行 next() 方法時從當前位置繼續運行

小例子:使用yield實現斐波那契數列:

 

九、Python函數

1.定義一個函數

    函數代碼塊以 def 關鍵詞開頭,后接函數標識符名稱和圓括號 ()。

    任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用於定義參數。

    函數內容以冒號起始,並且縮進

    return [表達式] 語句用於退出函數,選擇性地向調用方返回一個表達式。不帶參數值的return語句返回None。

 

2.調用函數

    直接使用函數標識符(加需要傳遞的參數)進行調用

 

3.參數傳遞

(1)明確一下Python里的可更改不可更改對象

    string、tuple、number都是不可更改對象;而list、dict是可更改對象

下面的概念好好理解:

不可變類型: 變量賦值 a=5 后再賦值 a=10,這里實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當於新生成了a。

可變類型: 變量賦值 la=[1,2,3,4] 后再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。

(2)對於不可變類型、可變類型對象在調用函數中作為參數傳遞:

不可變類型( string、tuple、number等):類似於C++的值傳遞;如func(a),a傳入的只是a的值,並不影響原來a對象本身。比如在函數內部對a的值改變,改變的只是這個對象的復制對象,對象a本身是不變的。

可變類型(list、dict等):類似於C++的引用傳遞,如func(la),la傳入的是這個對象本身,函數內部對這個對象修改后,外部的對象是會被改變的。

 

4.參數類型

調用參數時可使用的正式參數類型:

必需參數、關鍵字參數、默認參數、不定長參數

(1)必需參數: 必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣

(2)關鍵字參數: 使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為 Python 解釋器能夠用參數名匹配參數值。

例:

(3)默認參數

調用函數時,如果沒有傳遞參數,則會使用默認參數。以下實例中如果沒有傳入 age 參數,則使用默認值:

接上面例子:

(4)不定長參數

你可能需要一個函數能處理比當初聲明時更多的參數。

①第一種形式:使用加*的參數,表示輸入一個元組,這個元組的長度是不定的,由調用函數時,自動讀取。

例:

②第二種形式:使用加**的參數,表示輸入形式為字典形式,長度不定

例:

 

5.匿名函數

python 使用 lambda 來創建匿名函數。 lambda的主體是一個表達式,而不是一個代碼塊。

所謂匿名,意即不再使用 def 語句這樣標准的形式定義一個函數。

lambda 函數擁有自己的命名空間,且不能訪問自己參數列表之外或全局命名空間里的參數。

(1)語法:注意寫lambda表達式時參數部分不要加 [ ] 這個符號只是代表可以省略  ,不然會報錯

(2)例:

 可以看出,也可以不指定參數

 

十、Python數據結構

1.列表

2.列表——>堆棧

3. 元組和序列

4.集合

5.字典


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM