本文目錄一覽:
py基本語法
Python基礎語法總結:
1.Python標識符
在 Python 里,標識符有字母、數字、下劃線組成。
在 Python 中,所有標識符可以包括英文、數字以及下劃線(_),但不能以數字開頭。
Python 中的標識符是區分大小寫的。
以下劃線開頭的標識符是有特殊意義的。以單下劃線開頭 _foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用 from xxx import * 而導入;
以雙下劃線開頭的 foo 代表類的私有成員;以雙下劃線開頭和結尾的 foo 代表 Python 里特殊方法專用的標識,如 init__() 代表類的構造函數。
2.Python有五個標準的數據類型
Numbers(數字)
String(字元串)
List(列表)
Tuple(元組)
Dictionary(字典)
Python支持四種不同的數字類型:
int(有符號整型)
long(長整型[也可以代表八進位和十六進位])
float(浮點型)
complex(複數)
python的字串列表有2種取值順序:
從左到右索引默認0開始的,最大範圍是字元串長度少1
從右到左索引默認-1開始的,最大範圍是字元串開頭
List(列表) 是 Python 中使用最頻繁的數據類型。
列表可以完成大多數集合類的數據結構實現。它支持字元,數字,字元串甚至可以包含列表(即嵌套)。
列表用 [ ] 標識,是 python 最通用的複合數據類型。
列表中值的切割也可以用到變數 [頭下標:尾下標] ,就可以截取相應的列表,從左到右索引默認 0 開始,從右到左索引默認 -1 開始,下標可以為空表示取到頭或尾。
加號 + 是列表連接運算符,星號 * 是重複操作。
元組是另一個數據類型,類似於List(列表)。
元組用」()」標識。內部元素用逗號隔開。但是元組不能二次賦值,相當於只讀列表。
字典(dictionary)是除列表以外python之中最靈活的內置數據結構類型。
列表是有序的對象結合,字典是無序的對象集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
字典用」{ }」標識。字典由索引(key)和它對應的值value組成。
3.Python數據類型轉換
有時候,我們需要對數據內置的類型進行轉換,數據類型的轉換,你只需要將數據類型作為函數名即可。
以下幾個內置的函數可以執行數據類型之間的轉換。這些函數返回一個新的對象,表示轉換的值。
函數 描述
int(x [,base])
將x轉換為一個整數
long(x [,base] )
將x轉換為一個長整數
float(x)
將x轉換到一個浮點數
complex(real [,imag])
創建一個複數
str(x)
將對象 x 轉換為字元串
repr(x)
將對象 x 轉換為表達式字元串
eval(str)
用來計算在字元串中的有效Python表達式,並返回一個對象
tuple(s)
將序列 s 轉換為一個元組
list(s)
將序列 s 轉換為一個列表
set(s)
轉換為可變集合
dict(d)
創建一個字典。d 必須是一個序列 (key,value)元組。
frozenset(s)
轉換為不可變集合
chr(x)
將一個整數轉換為一個字元
unichr(x)
將一個整數轉換為Unicode字元
ord(x)
將一個字元轉換為它的整數值
hex(x)
將一個整數轉換為一個十六進位字元串
oct(x)
將一個整數轉換為一個八進位字元串
4.Python 運算符
算術運算符
比較(關係)運算符
賦值運算符
邏輯運算符
位運算符
成員運算符
身份運算符
運算符優先順序
python算術運算符
運算符 描述 實例
加 – 兩個對象相加 a + b 輸出結果 30
減 – 得到負數或是一個數減去另一個數 a – b 輸出結果 -10
乘 – 兩個數相乘或是返回一個被重複若干次的字元串 a * b 輸出結果 200
/ 除 – x除以y b / a 輸出結果 2
% 取模 – 返回除法的餘數 b % a 輸出結果 0
冪 – 返回x的y次冪 ab 為10的20次方, 輸出結果 100000000000000000000
// 取整除 – 返回商的整數部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0
①:python比較運算符
以下假設變數a為10,變數b為20:
運算符 描述 實例
== 等於 – 比較對象是否相等 (a == b) 返回 False。
!= 不等於 – 比較兩個對象是否不相等 (a != b) 返回 true.
不等於 – 比較兩個對象是否不相等 (a b) 返回 true。這個運算符類似 != 。
大於 – 返回x是否大於y (a b) 返回 False。
小於 – 返回x是否小於y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變數True和False等價。注意,這些變數名的大寫。 (a b) 返回 true。
= 大於等於 – 返回x是否大於等於y。 (a = b) 返回 False。
= 小於等於 – 返回x是否小於等於y。 (a = b) 返回 true。
②:Python賦值運算符
以下假設變數a為10,變數b為20:
運算符 描述 實例
= 簡單的賦值運算符 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
%= 取模賦值運算符 c %= a 等效於 c = c % a
= 冪賦值運算符 c = a 等效於 c = c ** a
//= 取整除賦值運算符 c //= a 等效於 c = c // a
③:Python位運算符
下表中變數 a 為 60,b 為 13,二進位格式如下:
a = 0011 1100
b = 0000 1101
ab = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
運算符 描述 實例
按位與運算符:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0 (a b) 輸出結果 12 ,二進位解釋: 0000 1100
| 按位或運算符:只要對應的二個二進位有一個為1時,結果位就為1。 (a | b) 輸出結果 61 ,二進位解釋: 0011 1101
^ 按位異或運算符:當兩對應的二進位相異時,結果為1 (a ^ b) 輸出結果 49 ,二進位解釋: 0011 0001
~ 按位取反運算符:對數據的每個二進位位取反,即把1變為0,把0變為1 (~a ) 輸出結果 -61 ,二進位解釋: 1100 0011, 在一個有符號二進位數的補碼形式。
左移動運算符:運算數的各二進位全部左移若干位,由」」右邊的數指定移動的位數,高位丟棄,低位補0。 a 2 輸出結果 240 ,二進位解釋: 1111 0000
右移動運算符:把」」左邊的運算數的各二進位全部右移若干位,」」右邊的數指定移動的位數 a 2 輸出結果 15 ,二進位解釋: 0000 1111
④:Python邏輯運算符
Python語言支持邏輯運算符,以下假設變數 a 為 10, b為 20:
運算符 邏輯表達式 描述 實例
and x and y 布爾」與」 – 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。 (a and b) 返回 20。
or x or y 布爾」或」 – 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 (a or b) 返回 10。
not not x 布爾」非」 – 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 not(a and b) 返回 False
⑤:Python成員運算符
除了以上的一些運算符之外,Python還支持成員運算符,測試實例中包含了一系列的成員,包括字元串,列表或元組。
運算符 描述 實例
in 如果在指定的序列中找到值返回 True,否則返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
⑥:Python身份運算符
身份運算符用於比較兩個對象的存儲單元
運算符 描述 實例
is is 是判斷兩個標識符是不是引用自一個對象 x is y, 類似 id(x) == id(y) , 如果引用的是同一個對象則返回 True,否則返回 False
is not is not 是判斷兩個標識符是不是引用自不同對象 x is not y , 類似 id(a) != id(b)。如果引用的不是同一個對象則返回結果 True,否則返回 False。
# 數據類型
print(0xff00); # 十六進位用0x前綴和0-9,a-f表示
print(1.23e9); # 對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23×10^9就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。
# 在Python中,可以直接用True、False表示布爾值(請注意大小寫)布爾值可以用and、or和not運算。
# 空值是Python里一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。
# —————————————-
# print語句
print(‘hello, world’)
print(‘The quick brown fox’, ‘jumps over’, ‘the lazy dog’) # 遇到逗號「,」會輸出一個空格
print(‘100 + 200 =’, 100 + 200) # 計算100 + 200的結果
# ——————————————–
# 變數
a = 1 # 變數是用一個變數名表示,變數名必須是大小寫英文、數字和_的組合,且不能用數字開頭
# 可以把任意數據類型賦值給變數,同一個變數可以反覆賦值,而且可以是不同類型的變數,稱為動態語言
# ——————————————-
# 可以使用轉義字元 \ 、\n、\t等等
# ——————————————-
# raw字元串與多行字元串
print(r’\(~_~)/ \(~_~)/’); # 我們可以在字元串前面加個前綴 r ,表示這是一個 raw 字元串,裡面的字元就不需要轉義了
# 但是r’…’表示法不能表示多行字元串,也不能表示包含’和 “的字元串
# 如果要表示多行字元串,可以用”’…”’表示
print(”’Python is created by “Guido”.
It is free and easy to learn.Let’s start learn Python in imooc!”’); # 等同於’Line 1\nLine 2\nLine 3′
# —————————————————
# Python在後來添加了對Unicode的支持,以Unicode表示的字元串用u’…’表示,比如:
print(u’中文’)
#—————————————————
#布爾類型
a = True
print( a and ‘a=T’ or ‘a=F’,a)
a and ‘a=T’
#計算結果不是布爾類型,而是字元串 ‘a=T’,這是為什麼呢?
#因為Python把0、空字元串”和None看成 False,其他數值和非空字元串都看成 True,所以:
a and ‘a=T’ #計算結果是 ‘a=T’
print( a and ‘a=T’ or ‘a=F’) #計算結果還是 ‘a=T’
# 創建tuple
# tuple是另一種有序的列表,中文翻譯為「 元組 」。tuple 和 list 非常類似,但是,tuple一旦創建完畢,就不能修改了。
t = (‘Adam’, ‘Lisa’, ‘Bart’) # 創建tuple和創建list唯一不同之處是用( )替代了[ ]
print(t)
# list是一種有序的集合,可以隨時添加和刪除其中的元素
L = [‘Adam’, 95.5, ‘Lisa’, 85, ‘Bart’, 59]
# 按照索引訪問list
# 輸出Bart,下標是從0開始
print(L[4])
# 倒序訪問list
# 輸出Bart,下標是從0開始
print(L[-2])
# dict的特點
# dict的第一個特點是查找速度快,無論dict有10個元素還是10萬個元素,查找速度都一樣(而list的查找速度隨著元素增加而逐漸下降。不過dict的查找速度快不是沒有代價的,dict的缺點是佔用內存大,還會浪費很多內容,list正好相反,佔用內存小,但是查找速度慢。)
# 由於dict是按 key 查找,所以,在一個dict中,key不能重複。
# dict的第二個特點就是存儲的key-value序對是沒有順序的
# dict的第三個特點是作為 key 的元素必須不可變,Python的基本類型如字元串、整數、浮點數都是不可變的,都可以作為 key。但是list是可變的,就不能作為 key
d = { ‘Adam’: 95, ‘Lisa’: 85, ‘Bart’: 59}
# 更新dict
d[‘Paul’] = 72 # 如果 key 已經存在,則賦值會用新的 value 替換掉原來的 value
# 遍歷dict
for i in d:
print(i,’:’,d[i])
# —————————————————
# set 持有一系列元素,這一點和 list 很像,但是set的元素沒有重複,而且是無序的,這點和 dict 的 key很像。
# 創建
s = set([‘A’, ‘B’, ‘C’])
# 遍歷
#更新set
s.add(4) #元素已經存在於set中,add()不會報錯,但是不會加進去了
s.remove(4) #元素不存在set中,remove()會報錯,所以remove()前需要判斷。
for name in s:
print(name)
python基本語法
python基本語法。
1.python基礎語法:如變數的聲明與調用、基本輸出語句、代碼塊語法、注釋等:數據類型:通常都為數字、字元串、布爾值、數組、鏈表、Map、Set等:運算符:算術運算符、賦值運算符、比較運算符、邏輯運算符、位運算符等。
2.流程式控制制語句:分支語句、循環語句。類的定義與使用:這個是面向對象編程語言才有的內容。常用API的使用:常用方法、工具類或模塊的使用。
Python語法小記憶
Python 中的字元串還支持轉義字元。所謂轉義字元是指使用反斜杠「\」對一些特殊字元進行轉義。
轉義字元說明
\ 續行符
\n 換行符
\0 空
\t 水平製表符,用於橫向跳到下一製表位
\” 雙引號
\’ 單引號
\\ 一個反斜杠
\f 換頁
\0dd 八進位數,dd 代表字元,如\012 代表換行
\xhh 十六進位數,hh 代表字元,如\x0a 代表換行
在Python 中,提供了如下表所示的函數進行數據類型的轉換。
函數作用
int(x) 將x 轉換成整數類型
float(x) 將x 轉換成浮點數類型
complex(real [,imag]) 創建一個複數
str(x) 將x 轉換為字元串
repr(x) 將x 轉換為表達式字元串
eval(str) 計算在字元串中的有效Python 表達式,並返回一個對象
chr(x) 將整數x 轉換為一個字元
ord(x) 將一個字元x 轉換為它對應的整數值
hex(x) 將一個整數x 轉換為一個十六進位字元串
oct(x) 將一個整數x 轉換為一個八進位的字元串
賦值運算符主要用來為變數等賦值。使用時,可以直接把基本賦值運算符「=」右邊的值賦給左邊的變數,也可以進行某些運算後再賦值給左邊的變數。在Python 中常用的賦值。
運算符如下表所示。
運算符說明舉例展開形式
= 簡單的賦值運算x=y x=y
+= 加賦值x+=y x=x+y
-= 減賦值x-=y x=x-y
*= 乘賦值x*=y x=x*y
/= 除賦值x/=y x=x/y
%= 取餘數賦值x%=y x=x%y
**= 冪賦值x**=y x=x**y
//= 取整除賦值x//=y x=x//y
比較運算符,也稱關係運算符,用於對變數或表達式的結果進行大小、真假等比較,如果比較結果為真,則返回True,如果為假,則返回False。比較運算符通常用在條件語句中作為判斷的依據。Python 中的比較運算符如下表所示。
運算符作用舉例結果
大於’a’ ‘b’ False
小於156 456 True
== 等於’c’ == ‘c’ True
!= 不等於’y’ != ‘t’ True
= 大於或等於479 = 426 True
= 小於或等於62.45 = 45.5 False
邏輯運算符是對真和假兩種布爾值進行運算,運算後的結果仍是一個布爾值,Python中的邏輯運算符主要包括and(邏輯與)、or(邏輯或)、not(邏輯非)。
運算符含義用法結合方向
and 邏輯與op1 and op2 從左到右
or 邏輯或op1 or op2 從左到右
not 邏輯非not op 從右到左
所謂運算符的優先順序,是指在應用中哪一個運算符先計算,哪一個後計算,與數學的四則運算應遵循的「先乘除,後加減」是一個道理。
下表按從高到低的順序列出了運算符的優先順序。同一行中的運算符具有相同優先順序,此時它們的結合方向決定求值順序。
運算符說明
** 冪
~、+、- 取反、正號和負號
*、/、%、// 算術運算符
+、- 算術運算符
、 位運算符中的左移和右移
位運算符中的位與
^ 位運算符中的位異或
| 位運算符中的位或
、=、、=、!=、== 比較運算符
在Python 中,使用內置函數input()可以接收用戶的鍵盤輸入。input()函數的基本用法如下:
variable = input("提示文字")
其中,variable 為保存輸入結果的變數,雙引號內的文字用於提示要輸入的內容。
默認的情況下,在Python中,使用內置的print()函數可以將結果輸出到IDLE或者標準控制台上。其基本語法格式如下:
Print(輸出內容)
其中,輸出內容可以是數字和字元串(字元串需要使用引號括起來),此類內容將直接
輸出,也可以是包含運算符的表達式,此類內容將計算結果輸出。
萬字乾貨,Python語法大合集,一篇文章帶你入門
這份資料非常純粹,只有Python的基礎語法,專門針對想要學習Python的小白。
Python中用#表示單行注釋,#之後的同行的內容都會被注釋掉。
使用三個連續的雙引號表示多行注釋,兩個多行注釋標識之間內容會被視作是注釋。
Python當中的數字定義和其他語言一樣:
我們分別使用+, -, *, /表示加減乘除四則運算符。
這裡要注意的是,在Python2當中,10/3這個操作會得到3,而不是3.33333。因為除數和被除數都是整數,所以Python會自動執行整數的計算,幫我們把得到的商取整。如果是10.0 / 3,就會得到3.33333。目前Python2已經不再維護了,可以不用關心其中的細節。
但問題是Python是一個 弱類型 的語言,如果我們在一個函數當中得到兩個變數,是無法直接判斷它們的類型的。這就導致了同樣的計算符可能會得到不同的結果,這非常蛋疼。以至於程序員在運算除法的時候,往往都需要手工加上類型轉化符,將被除數轉成浮點數。
在Python3當中撥亂反正,修正了這個問題,即使是兩個整數相除,並且可以整除的情況下,得到的結果也一定是浮點數。
如果我們想要得到整數,我們可以這麼操作:
兩個除號表示 取整除 ,Python會為我們保留去除餘數的結果。
除了取整除操作之外還有取餘數操作,數學上稱為取模,Python中用%表示。
Python中支持 乘方運算 ,我們可以不用調用額外的函數,而使用**符號來完成:
當運算比較複雜的時候,我們可以用括弧來強制改變運算順序。
Python中用首字母大寫的True和False表示真和假。
用and表示與操作,or表示或操作,not表示非操作。而不是C++或者是Java當中的, || 和!。
在Python底層, True和False其實是1和0 ,所以如果我們執行以下操作,是不會報錯的,但是在邏輯上毫無意義。
我們用==判斷相等的操作,可以看出來True==1, False == 0.
我們要小心Python當中的bool()這個函數,它並不是轉成bool類型的意思。如果我們執行這個函數,那麼 只有0會被視作是False,其他所有數值都是True :
Python中用==判斷相等,表示大於,=表示大於等於, 表示小於,=表示小於等於,!=表示不等。
我們可以用and和or拼裝各個邏輯運算:
注意not,and,or之間的優先順序,其中not and or。如果分不清楚的話,可以用括弧強行改變運行順序。
關於list的判斷,我們常用的判斷有兩種,一種是剛才介紹的==,還有一種是is。我們有時候也會簡單實用is來判斷,那麼這兩者有什麼區別呢?我們來看下面的例子:
Python是全引用的語言,其中的對象都使用引用來表示。is判斷的就是 兩個引用是否指向同一個對象 ,而==則是判斷兩個引用指向的具體內容是否相等。舉個例子,如果我們把引用比喻成地址的話,is就是判斷兩個變數的是否指向同一個地址,比如說都是沿河東路XX號。而==則是判斷這兩個地址的收件人是否都叫張三。
顯然,住在同一個地址的人一定都叫張三,但是住在不同地址的兩個人也可以都叫張三,也可以叫不同的名字。所以如果a is b,那麼a == b一定成立,反之則不然。
Python當中對字元串的限制比較松, 雙引號和單引號都可以表示字元串 ,看個人喜好使用單引號或者是雙引號。我個人比較喜歡單引號,因為寫起來方便。
字元串也支持+操作,表示兩個字元串相連。除此之外,我們把兩個字元串寫在一起,即使沒有+,Python也會為我們拼接:
我們可以使用[]來查找字元串當中某個位置的字元,用 len 來計算字元串的長度。
我們可以在字元串前面 加上f表示格式操作 ,並且在格式操作當中也支持運算,比如可以嵌套上len函數等。不過要注意,只有Python3.6以上的版本支持f操作。
最後是None的判斷,在Python當中None也是一個對象, 所有為None的變數都會指向這個對象 。根據我們前面所說的,既然所有的None都指向同一個地址,我們需要判斷一個變數是否是None的時候,可以使用is來進行判斷,當然用==也是可以的,不過我們通常使用is。
理解了None之後,我們再回到之前介紹過的bool()函數,它的用途其實就是判斷值是否是空。所有類型的 默認空值會被返回False ,否則都是True。比如0,””,[], {}, ()等。
除了上面這些值以外的所有值傳入都會得到True。
Python當中的標準輸入輸出是 input和print 。
print會輸出一個字元串,如果傳入的不是字元串會自動調用__str__方法轉成字元串進行輸出。 默認輸出會自動換行 ,如果想要以不同的字元結尾代替換行,可以傳入end參數:
使用input時,Python會在命令行接收一行字元串作為輸入。可以在input當中傳入字元串,會被當成提示輸出:
Python支持 三元表達式 ,但是語法和C++不同,使用if else結構,寫成:
上段代碼等價於:
Python中用[]表示空的list,我們也可以直接在其中填充元素進行初始化:
使用append和pop可以在list的末尾插入或者刪除元素:
list可以通過[]加上下標訪問指定位置的元素,如果是負數,則表示 倒序訪問 。-1表示最後一個元素,-2表示倒數第二個,以此類推。如果訪問的元素超過數組長度,則會出發 IndexError 的錯誤。
list支持切片操作,所謂的切片則是從原list當中 拷貝 出指定的一段。我們用start: end的格式來獲取切片,注意,這是一個 左閉右開區間 。如果留空表示全部獲取,我們也可以額外再加入一個參數表示步長,比如[1:5:2]表示從1號位置開始,步長為2獲取元素。得到的結果為[1, 3]。如果步長設置成-1則代表反向遍歷。
如果我們要指定一段區間倒序,則前面的start和end也需要反過來,例如我想要獲取[3: 6]區間的倒序,應該寫成[6:3:-1]。
只寫一個:,表示全部拷貝,如果用is判斷拷貝前後的list會得到False。可以使用del刪除指定位置的元素,或者可以使用remove方法。
insert方法可以 指定位置插入元素 ,index方法可以查詢某個元素第一次出現的下標。
list可以進行加法運算,兩個list相加表示list當中的元素合併。 等價於使用extend 方法:
我們想要判斷元素是否在list中出現,可以使用 in關鍵字 ,通過使用len計算list的長度:
tuple和list非常接近,tuple通過()初始化。和list不同, tuple是不可變對象 。也就是說tuple一旦生成不可以改變。如果我們修改tuple,會引發TypeError異常。
由於小括弧是有改變優先順序的含義,所以我們定義單個元素的tuple, 末尾必須加上逗號 ,否則會被當成是單個元素:
tuple支持list當中絕大部分操作:
我們可以用多個變數來解壓一個tuple:
解釋一下這行代碼:
我們在b的前面加上了星號, 表示這是一個list 。所以Python會在將其他變數對應上值的情況下,將剩下的元素都賦值給b。
補充一點,tuple本身雖然是不可變的,但是 tuple當中的可變元素是可以改變的 。比如我們有這樣一個tuple:
我們雖然不能往a當中添加或者刪除元素,但是a當中含有一個list,我們可以改變這個list類型的元素,這並不會觸發tuple的異常:
dict也是Python當中經常使用的容器,它等價於C++當中的map,即 存儲key和value的鍵值對 。我們用{}表示一個dict,用:分隔key和value。
對 。我們用{}表示一個dict,用:分隔key和value。
dict的key必須為不可變對象,所以 list、set和dict不可以作為另一個dict的key ,否則會拋出異常:
我們同樣用[]查找dict當中的元素,我們傳入key,獲得value,等價於get方法。
我們可以call dict當中的keys和values方法,獲取dict當中的所有key和value的集合,會得到一個list。在Python3.7以下版本當中,返回的結果的順序可能和插入順序不同,在Python3.7及以上版本中,Python會保證返回的順序和插入順序一致:
我們也可以用in判斷一個key是否在dict當中,注意只能判斷key。
如果使用[]查找不存在的key,會引發KeyError的異常。如果使用 get方法則不會引起異常,只會得到一個None :
setdefault方法可以 為不存在的key 插入一個value,如果key已經存在,則不會覆蓋它:
我們可以使用update方法用另外一個dict來更新當前dict,比如a.update(b)。對於a和b交集的key會被b覆蓋,a當中不存在的key會被插入進來:
我們一樣可以使用del刪除dict當中的元素,同樣只能傳入key。
Python3.5以上的版本支持使用**來解壓一個dict:
set是用來存儲 不重複元素 的容器,當中的元素都是不同的,相同的元素會被刪除。我們可以通過set(),或者通過{}來進行初始化。注意當我們使用{}的時候,必須要傳入數據,否則Python會將它和dict弄混。
set當中的元素也必須是不可變對象,因此list不能傳入set。
可以調用add方法為set插入元素:
set還可以被認為是集合,所以它還支持一些集合交叉並補的操作。
set還支持 超集和子集的判斷 ,我們可以用大於等於和小於等於號判斷一個set是不是另一個的超集或子集:
和dict一樣,我們可以使用in判斷元素在不在set當中。用copy可以拷貝一個set。
Python當中的判斷語句非常簡單,並且Python不支持switch,所以即使是多個條件,我們也只能 羅列if-else 。
我們可以用in來循環迭代一個list當中的內容,這也是Python當中基本的循環方式。
如果我們要循環一個範圍,可以使用range。range加上一個參數表示從0開始的序列,比如range(10),表示[0, 10)區間內的所有整數:
如果我們傳入兩個參數,則 代表迭代區間的首尾 。
如果我們傳入第三個元素,表示每次 循環變數自增的步長 。
如果使用enumerate函數,可以 同時迭代一個list的下標和元素 :
while循環和C++類似,當條件為True時執行,為false時退出。並且判斷條件不需要加上括弧:
Python當中使用 try和except捕獲異常 ,我們可以在except後面限制異常的類型。如果有多個類型可以寫多個except,還可以使用else語句表示其他所有的類型。finally語句內的語法 無論是否會觸發異常都必定執行 :
在Python當中我們經常會使用資源,最常見的就是open打開一個文件。我們 打開了文件句柄就一定要關閉 ,但是如果我們手動來編碼,經常會忘記執行close操作。並且如果文件異常,還會觸發異常。這個時候我們可以使用with語句來代替這部分處理,使用with會 自動在with塊執行結束或者是觸發異常時關閉打開的資源 。
以下是with的幾種用法和功能:
凡是可以使用in語句來迭代的對象都叫做 可迭代對象 ,它和迭代器不是一個含義。這裡只有可迭代對象的介紹,想要了解迭代器的具體內容,請移步傳送門:
Python——五分鐘帶你弄懂迭代器與生成器,夯實代碼能力
當我們調用dict當中的keys方法的時候,返回的結果就是一個可迭代對象。
我們 不能使用下標來訪問 可迭代對象,但我們可以用iter將它轉化成迭代器,使用next關鍵字來獲取下一個元素。也可以將它轉化成list類型,變成一個list。
使用def關鍵字來定義函數,我們在傳參的時候如果指定函數內的參數名, 可以不按照函數定義的順序 傳參:
可以在參數名之前加上*表示任意長度的參數,參數會被轉化成list:
也可以指定任意長度的關鍵字參數,在參數前加上**表示接受一個dict:
當然我們也可以兩個都用上,這樣可以接受任何參數:
傳入參數的時候我們也可以使用*和**來解壓list或者是dict:
Python中的參數 可以返回多個值 :
函數內部定義的變數即使和全局變數重名,也 不會覆蓋全局變數的值 。想要在函數內部使用全局變數,需要加上 global 關鍵字,表示這是一個全局變數:
Python支持 函數式編程 ,我們可以在一個函數內部返回一個函數:
Python中可以使用lambda表示 匿名函數 ,使用:作為分隔,:前面表示匿名函數的參數,:後面的是函數的返回值:
我們還可以將函數作為參數使用map和filter,實現元素的批量處理和過濾。關於Python中map、reduce和filter的使用,具體可以查看之前的文章:
五分鐘帶你了解map、reduce和filter
我們還可以結合循環和判斷語來給list或者是dict進行初始化:
使用 import語句引入一個Python模塊 ,我們可以用.來訪問模塊中的函數或者是類。
我們也可以使用from import的語句,單獨引入模塊內的函數或者是類,而不再需要寫出完整路徑。使用from import *可以引入模塊內所有內容(不推薦這麼干)
可以使用as給模塊內的方法或者類起別名:
我們可以使用dir查看我們用的模塊的路徑:
這麼做的原因是如果我們當前的路徑下也有一個叫做math的Python文件,那麼 會覆蓋系統自帶的math的模塊 。這是尤其需要注意的,不小心會導致很多奇怪的bug。
我們來看一個完整的類,相關的介紹都在注釋當中
以上內容的詳細介紹之前也有過相關文章,可以查看:
Python—— slots ,property和對象命名規範
下面我們來看看Python當中類的使用:
這裡解釋一下,實例和對象可以理解成一個概念,實例的英文是instance,對象的英文是object。都是指類經過實例化之後得到的對象。
繼承可以讓子類 繼承父類的變數以及方法 ,並且我們還可以在子類當中指定一些屬於自己的特性,並且還可以重寫父類的一些方法。一般我們會將不同的類放在不同的文件當中,使用import引入,一樣可以實現繼承。
我們創建一個蝙蝠類:
我們再創建一個蝙蝠俠的類,同時繼承Superhero和Bat:
執行這個類:
我們可以通過yield關鍵字創建一個生成器,每次我們調用的時候執行到yield關鍵字處則停止。下次再次調用則還是從yield處開始往下執行:
除了yield之外,我們還可以使用()小括弧來生成一個生成器:
關於生成器和迭代器更多的內容,可以查看下面這篇文章:
五分鐘帶你弄懂迭代器與生成器,夯實代碼能力
我們引入functools當中的wraps之後,可以創建一個裝飾器。裝飾器可以在不修改函數內部代碼的前提下,在外面包裝一層其他的邏輯:
裝飾器之前也有專門的文章詳細介紹,可以移步下面的傳送門:
一文搞定Python裝飾器,看完面試不再慌
不知道有多少小夥伴可以看到結束,原作者的確非常厲害,把Python的基本操作基本上都囊括在裡面了。如果都能讀懂並且理解的話,那麼Python這門語言就算是入門了。
如果你之前就有其他語言的語言基礎,我想本文讀完應該不用30分鐘。當然在30分鐘內學會一門語言是不可能的,也不是我所提倡的。但至少通過本文我們可以做到熟悉Python的語法,知道大概有哪些操作,剩下的就要我們親自去寫代碼的時候去體會和運用了。
根據我的經驗,在學習一門新語言的前期,不停地查閱資料是免不了的。希望本文可以作為你在使用Python時候的查閱文檔。
最後,我這裡有各種免費的編程類資料,有需要的及時私聊我,回復”學習”,分享給大家,正在發放中…………
Python 基礎知識全篇-字元串(Strings)
單引號和雙引號
字元串可以包含在單引號或雙引號中。
這種靈活的方式可以讓我們在字元串中包含引號。
當我們需要創建一個多行字元串的時候,可以用三個引號。如下所示:
改變大小寫
你可以很方便的改變字元串的大小寫。如下所示:
最常見的大小寫形式是全小寫(lower),首字母大寫(title)和全大寫(upper)。如下所示:
注意:初始字元串沒被改變。
你會經常見到這種用法。變數名後跟點和操作名稱,且後跟一組圓括弧。圓括弧里可能是空的,也可能包含一些數據。
variable_name.action()
在這個例子中, action 是一個 方法 的名字。 title , lower , upper 是內置在 Python 中的函數,可以作用於字元串的方法。
連接字元串
字元串連接示例如下所示:
加號連接兩個字元串。你可以使用任意個加號來連接字元串。
格式化字元串簡介
空白符
空白符通常指計算機能夠發現但不可見的字元。諸如空格,製表符,換行符等。
空格很容易創建,基本上在你擁有計算機的時候就會打出空格符。製表符和換行符是由特殊字元連接組成的。
“\t” 代表製表符,”\n” 代表換行符。你可以將它們添加進字元串的任意部分。
去除空白符
有時候我們想去除掉字元串開始或者結尾的空白符。Python 中有一些方法可以幫我們做到這點。如下所示:
lstrip 去除左側開端的空白符, rstrip 去除右端結尾的空白符, strip 去除兩端空白符。
看一個更清晰的例子,如下所示:
動手試一試
Someone Said
找一條自己喜歡的名言,存儲在變數。結合適當的介紹列印出來。例如:” Ken Thompson once said, ‘One of my most productive days was throwing away 1000 lines of code’ “。
First Name Cases
將你的姓存儲在一個變數中。
分別用 lowercase, Titlecase, UPPERCASE 三種方式列印姓。
Full Name
將你的名和姓存儲在不同的變數中,連接它們並列印。
Name Strip
將你的姓存儲在變數中。在姓的前後兩端至少各包含兩種空白符。
列印姓。
分別列印出去掉左側空白符,右側空白符,都去掉空白符的姓。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303808.html