千千萬萬之狀容兮,不可得而狀也
小馬
身份運(yùn)算符
身份運(yùn)算符用于比較兩個對象是否為同一個對象。身份運(yùn)算符共有兩個:is和is not。
Python身份運(yùn)算符的使用語法如下:
obj1 is [not] obj2
身份運(yùn)算符是用于比較兩個對象是否為同一個對象的運(yùn)算符,而比較運(yùn)算符中的“==”則是用于比較兩個對象的值是否相等的運(yùn)算符,不要將兩者混淆。
為了理解身份運(yùn)算的原理,首先介紹Python變量的3個屬性:name、id和value??蓪ame理解為變量名,id可理解為內(nèi)存地址,而value就是變量的值。身份運(yùn)算符is或is not是通過將變量的id屬性作為判斷依據(jù)來進(jìn)行判斷的,如果兩個變量的id相同,那么返回True,說明是同一個對象;否則返回False,說明不是同一個對象。
位運(yùn)算符
位運(yùn)算就是把對象轉(zhuǎn)換為二進(jìn)制后,按照對應(yīng)的二進(jìn)制位逐一進(jìn)行運(yùn)算的一種運(yùn)算形式。需要提醒的是,在計算機(jī)系統(tǒng)中,所有數(shù)值一律以補(bǔ)碼形式存儲。
關(guān)于什么是補(bǔ)碼的問題,請讀者自行查閱資料加以消化。為什么要理解補(bǔ)碼?因?yàn)樗c數(shù)值對象的二進(jìn)制轉(zhuǎn)換關(guān)系密切。
位運(yùn)算符是以二進(jìn)制形式參與運(yùn)算的一種運(yùn)算符。如果是雙目運(yùn)算符,則參與運(yùn)算的對象是二進(jìn)制的兩個位;如果是單目運(yùn)算符,則參與運(yùn)算的對象是二進(jìn)制的一個位。所謂雙目運(yùn)算符,就是必須有兩個對象參與運(yùn)算的運(yùn)算符。
優(yōu)先級與結(jié)合性
Python運(yùn)算符的優(yōu)先級用于描述計算機(jī)在計算表達(dá)式時執(zhí)行運(yùn)算的先后順序。優(yōu)先級規(guī)則是,先執(zhí)行具有較高優(yōu)先級的運(yùn)算,然后執(zhí)行具有較低優(yōu)先級的運(yùn)算。例如,數(shù)學(xué)中常說的先執(zhí)行乘、除運(yùn)算,再執(zhí)行加、減運(yùn)算,就是優(yōu)先級的一種體現(xiàn)。
除傳統(tǒng)意義上的優(yōu)先級外,Python在運(yùn)算過程中還使用一種新的優(yōu)先級,也就是運(yùn)算方向,借用C語言的概念,權(quán)且稱之為“結(jié)合性”。
Python的結(jié)合性也即運(yùn)算的方向,就是當(dāng)兩個運(yùn)算符的優(yōu)先級相同時,如何執(zhí)行運(yùn)算操作的問題。大多數(shù)Python運(yùn)算符的結(jié)合性均為“左結(jié)合性”:當(dāng)運(yùn)算符的優(yōu)先級相同時,按照從左向右的順序計算表達(dá)式的結(jié)果。例如,2+3+4被計算成(2+3)+4。唯一具有右結(jié)合性的運(yùn)算符是賦值運(yùn)算符“=”。優(yōu)先級數(shù)相同的運(yùn)算符具有相同的優(yōu)先級。
help(input)
上述文檔說明,input()函數(shù)從標(biāo)準(zhǔn)輸入設(shè)備讀入數(shù)據(jù),自動清除換行后將輸入轉(zhuǎn)換為字符串并以函數(shù)值形式返回。它最多只有一個參數(shù)prompt,通常是字符串類型的變量或常量,用于作為輸入時的提示信息;如果不帶參數(shù),則默認(rèn)為空值(None)。
以下通過兩個例子說明input()函數(shù)的用法。
舉例1:
>>> x=input()
123
>>> x
'123'
>>>
舉例1演示了無參數(shù)調(diào)用input()函數(shù)的情形。它自動接收從鍵盤輸入的“123”,將其轉(zhuǎn)換為字符串后返回并賦給變量x。
舉例2:
>>>x=input("請輸入數(shù)據(jù):")
請輸入數(shù)據(jù):123
>>>x
'123'
>>>
舉例2演示了帶參數(shù)調(diào)用input()函數(shù)的情形。函數(shù)參數(shù)為字符串常量“請輸入數(shù)據(jù):”,該信息被原樣輸出在屏幕上,它實(shí)際上是作為輸入時的提示,以提高人機(jī)友好性。
舉例3:
>>> x=input(123)
12356 #123是input()函數(shù)的參數(shù),56是輸入信息
>>> x
'56'
>>>
這個例子表明,input()函數(shù)的參數(shù)可為字符串以外的其他類型,但不被推薦。因?yàn)閺膸椭f明中可以看出,該參數(shù)被用作prompt,而prompt即提示的意思,所以使用字符串更加符合常理。
數(shù)據(jù)類型之間的轉(zhuǎn)換
由于input()函數(shù)接收的信息均以字符串形式返回,所以有必要進(jìn)行各種數(shù)據(jù)類型之間的轉(zhuǎn)換,以滿足不同的應(yīng)用需要。為了實(shí)現(xiàn)數(shù)據(jù)類型之間的轉(zhuǎn)換,可直接借助Python內(nèi)置函數(shù)。下面舉例說明。
舉例4:str()。
內(nèi)置函數(shù)str(x)用于將對象x轉(zhuǎn)換為字符串。
>>> x=123
>>> y=str(x)
>>> y
'123'
>>>
舉例5:chr()。
內(nèi)置函數(shù)chr(x)用于將一個整數(shù)轉(zhuǎn)換為一個字符,也就是將該整數(shù)作為ASCII碼,轉(zhuǎn)換成其對應(yīng)的字符。
>>>x=65 #字符A的ASCII碼
>>> y=chr(x)
>>> y
'A'
>>>
舉例6:hex()。
內(nèi)置函數(shù)hex(x)用于將一個整數(shù)轉(zhuǎn)換為一個十六進(jìn)制字符串。
>>> x=123
>>> y=hex(x)#將十進(jìn)制整數(shù)123轉(zhuǎn)換為十六進(jìn)制字符串“0x7b”。注意,是字符串,而不是數(shù)值
>>> y
'0x7b'
>>>
下面將重點(diǎn)引入并討論將字符串轉(zhuǎn)換為數(shù)值的內(nèi)置函數(shù)——eval()函數(shù)。該函數(shù)通常與input()函數(shù)配合使用,如影隨形,所以務(wù)必掌握它。
eval(str):計算字符串str中的表達(dá)式,并將計算結(jié)果以數(shù)值形式返回。通俗地說,就是將字符串轉(zhuǎn)換為相應(yīng)的數(shù)值表達(dá)式并求出它的值,將該值作為函數(shù)值返回。
舉3個例子說明eval()函數(shù)的用法。matlab里面也有,我以后寫~
舉例7:eval()函數(shù)的用法1。
>>> x="123"
>>> y=eval(x)
>>> y
123
舉例8:eval()函數(shù)的用法2。
>>> x="2+3"
>>> y=eval(x)
>>> y
5
舉例9:eval()函數(shù)的用法3。
>>> x="123abc"
>>> y=eval(x)
Traceback (most recent call last):
File "<pyshell#51>", line 1, in <module>
y=eval(x)
File "<string>", line 1
123abc
^
SyntaxError: unexpected EOF while parsing
>>>
舉例9說明,參數(shù)x為字符串“123abc”,它不被接受,因?yàn)樵赑ython中,不可能存在類似于123abc的表達(dá)式,也就是說,表達(dá)式是無效的、非法的。所謂表達(dá)式,是由變量、常量和運(yùn)算符組成的有確定值的式子。
print()函數(shù)的功能
在絕大多數(shù)情況下,程序需要通過輸出語句將結(jié)果或信息輸出至屏幕。Python無專門的輸出語句,它是通過調(diào)用輸出函數(shù)來實(shí)現(xiàn)輸出的,而內(nèi)置函數(shù)print()是Python唯一的格式化輸出函數(shù)。如果要獲取print()函數(shù)的詳細(xì)信息,則可以使用help(print)命令。
>>> help(print)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object(stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
>>>
從上述說明文檔中可以得到以下幾點(diǎn)信息:
· 它的參數(shù)個數(shù)是不定的,也就是說,它可以輸出多個參數(shù),用逗號分隔即可。
· 輸出時,參數(shù)間默認(rèn)使用一個空格隔開。
· 信息被輸出到file。file默認(rèn)為標(biāo)準(zhǔn)輸出設(shè)備,通常為屏幕。當(dāng)所有參數(shù)被輸出后,自動換行。
· flush參數(shù)決定是否清除緩存,默認(rèn)值為False,也就是說,不清除緩存。
print()函數(shù)的3種使用形式
調(diào)用內(nèi)置函數(shù)print()的形式通常有3種:非格式化輸出、使用%的格式化輸出和使用format()的格式化輸出。
1.形式一:非格式化輸出
非格式化輸出形式用于直接輸出任何類型的常量和變量。
舉例10:
>>> print(123)
123
>>> print("海闊天空")
海闊天空
>>>
舉例11:
>>> x=123
>>>print(x) #整型變量
123
>>> s="hello! "
>>>print(s) #字符串變量
hello!
>>> l=[1,3,5,7,9,11]
>>>print(l) #列表變量
[1, 3, 5, 7, 9, 11]
>>> t=(1,3,5,7,9,11)
>>>print(t) #元組變量
(1, 3, 5, 7, 9, 11)
>>> ss={12, "shaoxing",13, "wenzhou"}
>>>print(ss) #集合變量
{'shaoxing', 12, 13, 'wenzhou'}
>>> d={"name":"zhangsan", "yearsold":23, "program":"EE"}
>>>print(d) #字典變量
{'name': 'zhangsan', 'yearsold': 23, 'program': 'EE'}
>>>
2.形式二:格式化輸出——使用%
該形式類似于C語言中的printf()函數(shù),可用于向標(biāo)準(zhǔn)輸出設(shè)備以指定的格式輸出信息。在Python中,可采用以下兩種方法實(shí)現(xiàn)格式化輸出。
· 一般格式化法:使用格式規(guī)定符%以實(shí)現(xiàn)格式控制。格式規(guī)定符及其用法基本上與C語言中的相同,因此常被稱為類C法。
· format()函數(shù)法:通過內(nèi)置函數(shù)format()控制輸出的格式。
形式二指的就是一般格式化法。在一般格式化法中,常用的格式規(guī)定符有以下3個。
(1)%s。它是字符串格式規(guī)定符,用于規(guī)定以字符串形式輸出對象。例如,%10s表示字符串的寬度為10個字符,如不足則以空格補(bǔ)充,如超過則按實(shí)輸出。
(2)%d。它是整型數(shù)據(jù)格式規(guī)定符,用于規(guī)定以整數(shù)形式輸出對象。例如,%5d表示整型對象的輸出寬度為5個字符,如不足則以空格補(bǔ)充,如超過則按實(shí)輸出。(3)%f。它是浮點(diǎn)型數(shù)據(jù)格式規(guī)定符,用于規(guī)定以浮點(diǎn)數(shù)形式輸出對象。例如,%6.2f表示浮點(diǎn)型對象的寬度為6個字符(包括小數(shù)點(diǎn)“.”),小數(shù)點(diǎn)占2位,如不足則以空格補(bǔ)充。
上述格式規(guī)定符均為右對齊。如果要改為左對齊,則在“%”和“格式符字母”之間加一個“-”。例如,%-d表示在輸出整型對象時采用左對齊格式。
舉例12:
>>> for i in range(5):
print("%5d"%(i))
0
1
2
3
4
>>>
上述程序的輸出默認(rèn)為右對齊,下列程序的輸出則為左對齊。
舉例13:
>>> for i in range(5):
print("%-5d"%i)
0
1
2
3
4
>>> x=1234
>>> print("%d"%x)
1234
>>> print("%8d"%x)
1234
>>> print("%-8d"%x)
1234
>>>
有了上述兩個舉例,讀者應(yīng)該基本理解了一般格式化法的使用要點(diǎn)。現(xiàn)將一般格式化法的用法歸納如下:
print("格式字符串"%(輸出對象表))
其中,
· 格式字符串:由常規(guī)字符與格式規(guī)定符組成,常規(guī)字符被原樣輸出,格式規(guī)定符則由對應(yīng)的輸出對象代替。
· 輸出對象表:由一個或多個對象組成的表列。如果只有一個對象,則可省略括號;如果有多個對象,則常用“()”將多個對象包含,對象之間用“, ”隔開。注意,輸出對象表中對象的個數(shù)、順序必須與格式字符串中的格式規(guī)定符“一一對應(yīng)”。
格式化輸出——使用format()
該形式通過調(diào)用內(nèi)置函數(shù)format()控制print()函數(shù)的輸出格式。
從Python 2.6開始,推出了一種威力強(qiáng)大的格式化字符串方式,如下:
str.format()
那么,它跟前述使用“%”的格式化字符串方式相比,有哪些優(yōu)勢?
1)關(guān)于format()的說明
關(guān)于format()的使用,Python有詳細(xì)的說明文檔,可通過以下兩條命令去獲?。?/p>>>> help(format)
>>> help('FORMATTING')
使用“{}”和“:”代替“%”,在format()函數(shù)的配合下實(shí)現(xiàn)對字符串更加靈活多變的格式化控制,這是形式三最關(guān)鍵的部分。強(qiáng)烈建議使用形式三,因?yàn)樗梢詫λ袛?shù)據(jù)類型進(jìn)行格式化,相較于“%”方式,功能更加強(qiáng)大。
你學(xué)費(fèi)沒有????????????
聯(lián)系客服