Ⅰ python死磕——Python賦值語句、表達式以及列印
a賦值為's' b賦值為'p'
在這個賦值語句中,a匹配第一個字母,剩下的用於匹配b:a賦值為's',b賦值為'pam'
在這個語句中spam ham都會賦值成對相同的字元串對象'lunch'的引用
賦值右側可以是任何類型的序列,只要長度相等即可
在Python3.0中可以允許我們使用更為通用的擴展解包語法,在python2.x中要求賦值目標中的項數和主體的數目必須一致:否則就會報錯
如果想使用通用方法就需要使用分片。
在Python3.0中一個帶有單個星號的名稱,可以在賦值目標中使用,以指定對於序列的一個更為通用的匹配
帶星號的名稱可能只匹配單個的項
X+=Y X&=Y X-=Y X|=Y
X =Y X^=Y X/=Y X>>=Y
X%=Y X<<=Y X *=Y X//=Y
增強賦值語句的有點
對於增強賦值語句,對列表是做原處修改的意思。而'+'總是生成新對象。
上述的例子中,由於'+'會生成一個新的列表對象,所以M的值並沒有發生改變
猶豫增強賦值對於可變的數據類型時在原處修改值,所以使M的值發生了變化
對列表調用append、sort、reverse這類在原處修改的運算,一定是對列表做原處的修改,但這些方法在列表修改後並不會把列表返回,而是返回的None對象
print默認的把對象列印到stdout流,添加了一些格式化。
格式中sep、end、和file部分如果給出的話,必須作為關鍵字參數給定。必須使用一種特殊的"name = value"語法來根據名稱而不是根據位置來傳遞參數。
在Python3.0和Python2.6中,列印都默認地發送到標准輸出流。也可以發送到一個文本文件』
print只是Python的人性化的特性,它提供了sys.stdout對象的簡單介面
將輸出流重定向到文件後print語句直接列印內容到文件
Ⅱ Python其實很簡單 第六章 基本運算
Python中將算式稱為表達式。數學上算式是用數學語言、數學符號來表達某種關系、某種運算、某種性質的,同樣的,在Python中,表達式也是用運算符將各種數據類型的數據連接起來。
數據的類型在前面已經介紹過了,下面介紹一些最常用到的運算符。
6.1算術運算
算術運算符是用於處理四則運算的運算符,常用的算術運算符如下表所示。
算術表達式就是用算術運算符將各種類型的數據連接起來,算術運算的規則和數學中一致。除了數學中用到的四則運算符「 、-、*、/ 」外,要特別注意「取模(%)」、「冪(**)」、「整除(//)」的用法。
6.2給變數賦值
最常用的賦值運算符是「=」,「a=b」的意思就是將值b賦值給變數a。
Python中還一些帶有運算功能的賦值方法,含義為「先計算,後賦值」如:
以下假設變數:a=10,b=20
「+=」,讀作「加賦值」,如a+=b,相當於a=a+b, 則a被賦值為30;
「-=」,讀作「減賦值」,如a-=b,相當於a=a-b, 則a被賦值為-10;
「*=」,讀作「乘賦值」,如a*=b,相當於a=a*b, a被賦值為200;
「/=」,讀作「除賦值」,如a/=b,相當於a=a/b, a被賦值為0.5;
「%=」,讀作「取余數賦值」,如a%=b,相當於a=a%b, a被賦值為10;
「**=」,讀作「冪賦值」,如a**=b,相當於a=a**b, a被賦值為100000000000000000000;
「//=」,讀作「取整數賦值」,如a//=b,相當於a=a//b, a被賦值為0;
6.3關系運算
關系運算符,也叫比較運算符,用於比較兩個變數或表達式運算結果之間的大小關系。關系表達式是用關系運算符將變數或表達式連接起來的表達式,其運算結果為一個布爾值,即True或False。
Python3.0的關系運算符有:「大於>」、「小於=」、「小於或等於<=」。
還有一個特殊的關系運算符「值1變數值2」,如:
>>> a=10
>>> b=20
>>> c=15
>>> print(a<b<c) p=""> </b<c)>
False
>>> print(a<c<b) p=""> </c<b)>
True
6.4邏輯運算
邏輯運算符包括「邏輯與and」、「邏輯或or」、「邏輯非not」,具體用法見下表。
以下假設變數 a 為 10, b為 20:
在上表中,變數a和變數b都是非0的數,被當做值為True的變數參與邏輯運算。
Ⅲ python表達式和語句的區別
語句呢范圍更大,python任何一行代碼都可以稱為語句,語句是獨立功能實現的最小單位,就想我們寫作文的每一句話就是一個語句,而表達式都是特定功能的一種表達方式,也可以理解為擁有特殊功能的語句
Ⅳ Python表達式是什麼
python表達式是值,變數和操作符(或叫運算符)的組合。多帶帶的一個值是一個表達式,多帶帶的變數也是一個表達式。運算符和操作數一起構成表達式,操作數可以使用標識符表示,如a=3;b=2;c=a*b,表達式是python程序最常見的代碼。
Python代碼由表達式和語句組成,並由Python解釋器負責執行,它們的主要區別是「表達式」是一個值,它的結果一定是一個Python對象。當Python解釋器計算它時結果可以是任何對象。例如42,1+2,int(『123』),range(10)等。
表達式是有優先順序的,最簡單的如我們賦值運算符中的數學算式:「0 * 1 + 2」和「0 + 1 * 2」結果一定不一樣,在「0 + 1 *
2」中優先運算「1 * 2」。當然並非是只有賦值運算才優先順序,並且在各種運算符之間也有優先順序。
條件表達式基本語法:結果1 if 表達式 else
結果2,結果1為表達式結果為True的值,結果2位表達式結果為False的值。語法演變:variable = [結果1] if [表達式] else
[結果2]。
Ⅳ Python其實很簡單 第十一章 正則表達式
正則表達式是一個特殊的字元序列,它用來檢查一個字元串是否與某種模式匹配。正則表達式在編譯程序中至關重要,但並不是每個人都需要特別深入的學習和掌握。在此,只介紹一些最基本的應用。
1、元字元
元字元是構成正則表達式的一些特殊字元。在正則表達式中,元字元被賦予了新的含義。
下面介紹一些常用的元字元及其含義:
. 匹配除換行符以外的任意字元。
w 匹配字母、數字、下劃線或漢字。
W 匹配w所匹配的字元以外的字元。
s 匹配單個空白符(包括Tab鍵和換行符)。
S 匹配除s匹配的字元以外的字元。
d 匹配數字。
b 匹配單詞的分界符,如:空格、標點符號或換行符。
^ 匹配字元串的開始
$ 匹配字元串的結束
2、限定符
限定符是在正則表達式中用來指定數量的字元。常用的限定符有:
? 匹配前面的字元0或1次。如:zo?m可以匹配zom和zm,但不能匹配 zoom
+ 匹配前面的字元1或n次。如:zo?m可以匹配zom和zoom,但不能匹配zm
* 匹配前面的字元0或n次。如:zo?m可以匹配zom、zoom和zm
{n} 匹配前面的字元n次。如:zo{2}m可以匹配zoom,但不能匹配zom和zm
{n,} 匹配前面的字元至少n次。如:zo{1,}m可以匹配zom和zoom,但不能匹配zm
{n,m} 匹配前面的字元至少n次,最多m次。如:zo{1,2}m可以匹配zom和zoom,但不能匹配zm
3、方括弧」[ ]」的用途
方括弧「[ ]」里可以列出某個字元范圍。如:[aeiou]表示匹配任意一個母音字母,[zqsl]表示匹配姓氏「趙錢孫李」的拼音第一個字母。
4、排除字元
方括弧」[ ]」中的「^」字元表示排除的意思,如:[^aeiou]表示匹配任意一個非母音字母的字元。
5、選擇字元
字元「|」相當於「或」。如:(^d{3}[-]d{8})|(^d{4}[-]d{7})$可以匹配形如」 - 」或「 - 」的電話號碼格式。
6、轉義字元
對於已經用於定義元字元和限定符的字元,需要加轉義符「」來表示。
如:為了匹配形如「192.168.0.1」的IPv4地址(1~255.0~255.0~255.0~255),可以用這樣的正則表達式:^(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$
這里解釋一下第一段IP地址的規則,取值范圍為1~255,可分解為以下情況:
250~255:25[0-5];
200~249:2[0-4][0-9];
100~199:[01]{1}[0-9]{2};
0~99: [0-9]{1}[1-9]
再加上」.」: .
其他三段地址和第一段相似。
7、「( )」可以用於分組
在正則表達式中,用「( )」括起來的部分是一個整體。
8、r(或R)的意義
在正則表達式中,為了保證模式字元串為原生字元串(沒有經過加工處理的字元串),可以在模式字元串前加上一個字元『r』或『R』。例如:
# 這里用到對的re.match()方法接下來介紹
>>> import re # 導入re模塊
>>> re.match('bPy[a-z]+','Python') # 表達式'bPy[a-z]+'不能匹配』Python』
>>> re.match('bPy[a-z]+','Python') # 表達式'bPy[a-z]+'可以匹配』Python』
在上述代碼中,原本要用作匹配單詞開始或結束的元字元』b』在表達式中字元串中會被視為轉義一個字元『b』,為了轉義』b』就不得不再加一個』』符號。
也可以採用下面的方法:
>>> re.match(r'bPy[a-z]+','Python') #加字元』r』,可以保證原生字元串
9、match()方法
Match()方法 嘗試從字元串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match() 就返回 none。
語法格式:
re.match(pattern, string, [flags])
其中,pattern表示匹配的正則表達式;string是要匹配的字元串;flags表示標志位,用於控制正則表達式的匹配方式,如:re.I表示不區分大小寫。
例:
import re #導入re模塊
print(re.match('www', 'www.python.org/').span()) #span()函數可以獲取匹配的位置
print(re.match('org', 'www.python.org'))
輸出結果為:
(0, 3) #在位置0到3(不包括3)匹配成功
None #從起始位置未能匹配成功
10、search()方法
search()方法用於在整個字元串中搜索第一個匹配的值,如果匹配成功,則返回Match對象,否則返回None。
語法格式:
re.search(pattern, string, [flags])
其中,pattern表示匹配的正則表達式;string是要匹配的字元串;flags表示標志位,用於控制正則表達式的匹配方式,如:re.I表示不區分大小寫。
例如:
>>> re.search(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.')
可以看出,目標字元串「It's easy to use Python, but it's not easy to learn Python.」中一共有兩個『Python』,search()方法可以從字元串的起始位置開始查找到『Python』,當找到第一個匹配值後就停止查找,返回位置信息。
match()和search()的比較
match()要求目標字元串的起始位置就能匹配,search()對目標字元串全段進行逐次匹配,只要首次匹配成功就停止匹配。
請看下例:
>>> import re
>>> print(re.match(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.'))
輸出結果:None
11、findall()方法
findall()方法用於在整個字元串中搜索所有匹配的值,如果匹配成功,則返回以匹配值為元素的列表,否則返回空列表。
語法格式:
re.findall(pattern, string[, flags])
其中,pattern表示匹配的正則表達式;string是要匹配的字元串;flags表示標志位,用於控制正則表達式的匹配方式,如:re.I表示不區分大小寫。
例:
>>> import re
>>>print(re.findall(r'Pyw+','It's easy to use Python, but it's not easy to learn Python.'))
輸出結果:['Python', 'Python']
可以看出,findall()的結果沒有指出匹配的具體位置。
12、正則表達式的應用
字元串替換
這里要用到sub()方法。它的語法格式如下:
re.sub(pattern, repl, string [,count] [,flgs])
其中,pattern是模式字元串;repl是用於替換的字元串;string是原字元串;可選參數count為模式匹配後替換的最大次數,省缺表示替換所有的匹配;可選參數flags的意義與前面的方法的該參數一致。
例:
>>> import re
>>> str1='x=36.567 y=123.234'
>>> str2=re.sub('.d+','',str1) #用空格代替小數點及其後的數字
>>> print(str2)
輸出結果:x=36 y=123
分隔字元串
這里要用到split()方法。它的返回值為一個列表,它的語法格式如下:
re.split(pattern, string [,maxsplit] [,flgs])
其中,pattern是模式字元串;string是原字元串;可選參數maxsplit為最大拆分次數,省缺表示拆分所有的匹配;可選參數flags的意義與前面的方法的該參數一致。
例:
>>> import re
>>> str='白日依山盡,黃河入海流。欲窮千里目,更上一層樓!'
>>> re.split(r',|。|!',str) #按照「,」、「。」、「!」分隔字元串。
['白日依山盡', '黃河入海流', '欲窮千里目', '更上一層樓', '']
注意,返回值列表中多出了一個空字元。
Ⅵ 所有python表達式都做什麼事
這里的a=1則是一個表達式,它本身並不會產生任何動作,而只是把變數a的值和1進行比較,然後把比較結果交給if語句去處理。 也就是說:語句是可以單獨執行的、能夠產生實際效果的代碼;而表達式則是包含在語句中,根據某種條件計算出一個值或得出某種結果,然後由語句去判斷和處理的代碼。