Python基礎(chǔ)

1.關(guān)于字符串:字符串用單引號(hào)或雙引號(hào)括住,但當(dāng)字符串里有單引號(hào)時(shí)芝薇,外面用雙引號(hào)括住彼妻,如果字符串里既有單引號(hào)也有雙引號(hào),那就要用轉(zhuǎn)義字符啦~舉個(gè)例子:I'm "OK" !>>>>>' I\'m \"OK\" ! '

2.關(guān)于轉(zhuǎn)義字符:順便再寫(xiě)一寫(xiě)常用的轉(zhuǎn)義字符:\n表示換行杆故,\t表示制表符迅箩,字符\本身也要轉(zhuǎn)義,所以\\表示的字符就是\处铛,可以在Python的交互式命令行用print()打印字符串看看

>>>print('I\'m ok.')

I'm ok.

>>> print('I\'m learning\nPython.')I'm learning

Python.

>>> print('\\\n\\')

\

\

如果字符串里面有很多字符都需要轉(zhuǎn)義饲趋,就需要加很多\拐揭,為了簡(jiǎn)化,Python還允許用r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義

如果字符串內(nèi)部有很多換行奕塑,用\n寫(xiě)在一行里不好閱讀堂污,為了簡(jiǎn)化,Python允許用'''...'''的格式表示多行內(nèi)容(這個(gè)是在交互式命令行中這樣寫(xiě)龄砰,提示符由>>>變?yōu)?..盟猖,提示你可以接著上一行輸入,注意...是提示符换棚,不是代碼的一部分)

編輯器程序保存成.py文件的可以這么寫(xiě):

print('''line1

line2

line3''')

3.關(guān)于變量和常量:(1)python是動(dòng)態(tài)語(yǔ)言式镐,比如執(zhí)行一個(gè)賦值語(yǔ)句:a = 'ABC'。Python解釋器干了兩件事情:第一在內(nèi)存中創(chuàng)建了一個(gè)'ABC'的字符串固蚤;第二在內(nèi)存中創(chuàng)建了一個(gè)名為a的變量娘汞,并把它指向'ABC'。

(2)在Python中夕玩,通常用全部大寫(xiě)的變量名表示常量价说。PI =3.14159265359

但事實(shí)上PI仍然是一個(gè)變量,Python根本沒(méi)有任何機(jī)制保證PI不會(huì)被改變风秤,所以鳖目,用全部大寫(xiě)的變量名表示常量只是一個(gè)習(xí)慣上的用法,如果你一定要改變變量PI的值缤弦,也沒(méi)人能攔住你领迈。

(3)除法是精確的,在Python中碍沐,有兩種除法狸捅,一種除法是/:>>> 10/3??? 3.3333333333333335????????????? /除法計(jì)算結(jié)果是浮點(diǎn)數(shù),即使是兩個(gè)整數(shù)恰好整除累提,結(jié)果也是浮點(diǎn)數(shù):>>> 9/3??? 3.0????????????????????????????? 還有一種除法是//尘喝,稱為地板除,兩個(gè)整數(shù)的除法仍然是整數(shù):>>>10// 3???? 3?????????????????????????????????????????? 整數(shù)的地板除//永遠(yuǎn)是整數(shù)斋陪,即使除不盡朽褪。要做精確的除法,使用/就可以无虚。因?yàn)?/除法只取結(jié)果的整數(shù)部分缔赠,所以Python還提供一個(gè)余數(shù)運(yùn)算,可以得到兩個(gè)整數(shù)相除的余數(shù):>>> 10%3?? 1?????????????????????????????? 無(wú)論整數(shù)做//除法還是取余數(shù)友题,結(jié)果永遠(yuǎn)是整數(shù)嗤堰,所以,整數(shù)運(yùn)算結(jié)果永遠(yuǎn)是精確的度宦。

4.關(guān)于字符串編碼:因?yàn)橛?jì)算機(jī)只能處理數(shù)字踢匣,如果要處理文本告匠,就必須先把文本轉(zhuǎn)換為數(shù)字才能處理。最早的計(jì)算機(jī)在設(shè)計(jì)時(shí)采用8個(gè)比特(bit)作為一個(gè)字節(jié)(byte)离唬,所以凫海,一個(gè)字節(jié)能表示的最大的整數(shù)就是255(二進(jìn)制11111111=十進(jìn)制255),如果要表示更大的整數(shù)男娄,就必須用更多的字節(jié)行贪。比如兩個(gè)字節(jié)可以表示的最大整數(shù)是65535,4個(gè)字節(jié)可以表示的最大整數(shù)是4294967295模闲。

由于計(jì)算機(jī)是美國(guó)人發(fā)明的建瘫,因此,最早只有127個(gè)字符被編碼到計(jì)算機(jī)里尸折,也就是大小寫(xiě)英文字母啰脚、數(shù)字和一些符號(hào),這個(gè)編碼表被稱為ASCII編碼实夹,比如大寫(xiě)字母A的編碼是65橄浓,小寫(xiě)字母z的編碼是122。

但是要處理中文顯然一個(gè)字節(jié)是不夠的亮航,至少需要兩個(gè)字節(jié)荸实,而且還不能和ASCII編碼沖突,所以缴淋,中國(guó)制定了GB2312編碼准给,用來(lái)把中文編進(jìn)去。你可以想得到的是重抖,全世界有上百種語(yǔ)言露氮,日本把日文編到Shift_JIS里,韓國(guó)把韓文編到Euc-kr里钟沛,各國(guó)有各國(guó)的標(biāo)準(zhǔn)畔规,就會(huì)不可避免地出現(xiàn)沖突,結(jié)果就是恨统,在多語(yǔ)言混合的文本中叁扫,顯示出來(lái)會(huì)有亂碼。

因此延欠,Unicode應(yīng)運(yùn)而生陌兑。Unicode把所有語(yǔ)言都統(tǒng)一到一套編碼里沈跨,這樣就不會(huì)再有亂碼問(wèn)題了由捎。Unicode標(biāo)準(zhǔn)也在不斷發(fā)展,但最常用的是用兩個(gè)字節(jié)表示一個(gè)字符(如果要用到非常偏僻的字符饿凛,就需要4個(gè)字節(jié))∧辏現(xiàn)代操作系統(tǒng)和大多數(shù)編程語(yǔ)言都直接支持Unicode

現(xiàn)在软驰,捋一捋ASCII編碼和Unicode編碼的區(qū)別:ASCII編碼是1個(gè)字節(jié),而Unicode編碼通常是2個(gè)字節(jié)心肪。字母A用ASCII編碼是十進(jìn)制的65锭亏,二進(jìn)制的01000001;

字符0用ASCII編碼是十進(jìn)制的48硬鞍,二進(jìn)制的00110000慧瘤,注意字符'0'和整數(shù)0是不同的;

漢字中已經(jīng)超出了ASCII編碼的范圍固该,用Unicode編碼是十進(jìn)制的20013锅减,二進(jìn)制的01001110 00101101。你可以猜測(cè)伐坏,如果把ASCII編碼的A用Unicode編碼怔匣,只需要在前面補(bǔ)0就可以,因此桦沉,A的Unicode編碼是00000000 01000001每瞒。

新的問(wèn)題又出現(xiàn)了:如果統(tǒng)一成Unicode編碼,亂碼問(wèn)題從此消失了纯露。但是剿骨,如果你寫(xiě)的文本基本上全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的存儲(chǔ)空間埠褪,在存儲(chǔ)和傳輸上就十分不劃算懦砂。

所以,本著節(jié)約的精神组橄,又出現(xiàn)了把Unicode編碼轉(zhuǎn)化為“可變長(zhǎng)編碼”的UTF-8編碼鱼炒。UTF-8編碼把一個(gè)Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個(gè)字節(jié),常用的英文字母被編碼成1個(gè)字節(jié)线梗,漢字通常是3個(gè)字節(jié)汁胆,只有很生僻的字符才會(huì)被編碼成4-6個(gè)字節(jié)。如果你要傳輸?shù)奈谋景罅坑⑽淖址癜啵肬TF-8編碼就能節(jié)省空間:

對(duì)比圖

從上圖還可以發(fā)現(xiàn)屠升,UTF-8編碼有一個(gè)額外的好處,就是ASCII編碼實(shí)際上可以被看成是UTF-8編碼的一部分狭郑,所以腹暖,大量只支持ASCII編碼的歷史遺留軟件可以在UTF-8編碼下繼續(xù)工作,總結(jié)一下現(xiàn)在計(jì)算機(jī)系統(tǒng)通用的字符編碼工作方式:在計(jì)算機(jī)內(nèi)存中翰萨,統(tǒng)一使用Unicode編碼脏答,當(dāng)需要保存到硬盤(pán)或者需要傳輸?shù)臅r(shí)候,就轉(zhuǎn)換為UTF-8編碼。

(1)用記事本編輯的時(shí)候殖告,從文件讀取的UTF-8字符被轉(zhuǎn)換為Unicode字符到內(nèi)存里阿蝶,編輯完成后,保存的時(shí)候再把Unicode轉(zhuǎn)換為UTF-8保存到文件

(2)瀏覽網(wǎng)頁(yè)的時(shí)候黄绩,服務(wù)器會(huì)把動(dòng)態(tài)生成的Unicode內(nèi)容轉(zhuǎn)換為UTF-8再傳輸?shù)綖g覽器

5.關(guān)于格式化輸出:

(1)在Python中羡洁,采用的格式化方式和C語(yǔ)言是一致的,用%實(shí)現(xiàn)


如果你不太確定應(yīng)該用什么爽丹,%s永遠(yuǎn)起作用筑煮,它會(huì)把任何數(shù)據(jù)類型轉(zhuǎn)換為字符串。有些時(shí)候粤蝎,字符串里面的%是一個(gè)普通字符怎么辦咆瘟?這個(gè)時(shí)候就需要轉(zhuǎn)義,用%%來(lái)表示一個(gè)%诽里。

(2)format方法

它會(huì)用傳入的參數(shù)依次替換字符串內(nèi)的占位符{0}袒餐、{1}……,不過(guò)這種方式寫(xiě)起來(lái)比%要麻煩得多:

>>> 'Hello, {0}, 成績(jī)提升了 {1:.1f}%'.format('小明',17.125)'

Hello, 小明, 成績(jī)提升了 17.1%'

6.list and tuple

關(guān)于list這種可變的有序表谤狡,索引可以從后面開(kāi)始灸眼,比如list[-1],代表的就是列表里最后一個(gè)元素墓懂。

append()方法是在列表末尾加元素焰宣;insert(i,element)方法中i是索引,element是要添加的元素捕仔;pop()是刪除列表里最后一個(gè)元素匕积,pop(i)刪除對(duì)應(yīng)索引出的元素;要把某個(gè)元素替換成別的元素榜跌,可以直接賦值給對(duì)應(yīng)的索引位置闪唆。列表里的元素可以還是一個(gè)列表,類似多維數(shù)組取值钓葫。

關(guān)于tuple定長(zhǎng)的有序列表悄蕾,安全性高。有一點(diǎn)要注意础浮,就是定一個(gè)有一個(gè)元素的元組帆调,要寫(xiě)成>>> t = (1,)不能寫(xiě)成>>> t = (1),這是為什么呢豆同?

答:t=(1)定義的不是tuple番刊,是1這個(gè)數(shù)!這是因?yàn)槔ㄌ?hào)()既可以表示tuple影锈,又可以表示數(shù)學(xué)公式中的小括號(hào)芹务,這就產(chǎn)生了歧義蝉绷,因此,Python規(guī)定锄禽,這種情況下潜必,按小括號(hào)進(jìn)行計(jì)算靴姿,計(jì)算結(jié)果自然是1沃但。所以我們要在1后面加上逗號(hào)來(lái)消除歧義。

tuple定義之后佛吓,就不可變宵晚。但這里面有個(gè)誤區(qū),確切地說(shuō)應(yīng)該是tuple的每個(gè)元素指向永遠(yuǎn)不變维雇。但如果tuple某個(gè)元素是可變的list淤刃,這個(gè)list本身是可變的!如下面這個(gè)例子:

>>> t = ('a','b', ['A','B'])

>>> t[2][0] ='X'

>>> t[2][1] ='Y'

>>> t

('a','b', ['X','Y'])

7.關(guān)于條件判斷

if判斷條件還可以簡(jiǎn)寫(xiě)吱型,比如寫(xiě):

if x:

??? print('True')

只要x是非零數(shù)值逸贾、非空字符串、非空l(shuí)ist等津滞,就判斷為T(mén)rue铝侵,否則為False。

break語(yǔ)句可以在循環(huán)過(guò)程中直接退出循環(huán)触徐,而continue語(yǔ)句可以提前結(jié)束本輪循環(huán)咪鲜,并直接開(kāi)始下一輪循環(huán)。這兩個(gè)語(yǔ)句通常都必須配合if語(yǔ)句使用撞鹉。

要特別注意疟丙,不要濫用break和continue語(yǔ)句。break和continue會(huì)造成代碼執(zhí)行邏輯分叉過(guò)多鸟雏,容易出錯(cuò)享郊。大多數(shù)循環(huán)并不需要用到break和continue語(yǔ)句,上面的兩個(gè)例子孝鹊,都可以通過(guò)改寫(xiě)循環(huán)條件或者修改循環(huán)邏輯拂蝎,去掉break和continue語(yǔ)句。

8.dict and set

dict的鍵值對(duì)形式惶室,pop(key)方法對(duì)應(yīng)的value也會(huì)從dict刪除温自。要避免key不存在,兩種方法:

(1)通過(guò)in來(lái)判斷key是否存在

(2)get()方法皇钞,如果key不存在悼泌,返回None,或者自己指定value夹界。注意:返回None的時(shí)候Python的交互環(huán)境不顯示結(jié)果馆里。

>>> d.get('Thomas', -1)??????

-1????????????????????

和list比較,dict有以下幾個(gè)特點(diǎn):1.查找和插入的速度極快,不會(huì)隨著key的增加而變慢鸠踪;2.需要占用大量的內(nèi)存丙者,內(nèi)存浪費(fèi)多。而list相反:1.查找和插入的時(shí)間隨著元素的增加而增加营密;2.占用空間小械媒,浪費(fèi)內(nèi)存很少。所以评汰,dict是用空間來(lái)?yè)Q取時(shí)間的一種方法纷捞。

需要牢記的第一條就是dict的key必須是不可變對(duì)象

set和dict類似被去,也是一組key的集合主儡,但不存儲(chǔ)value。由于key不能重復(fù)惨缆,所以糜值,在set中,沒(méi)有重復(fù)的key并且里面元素是無(wú)序的坯墨。有add(key)和remove(key)方法添加和刪除元素寂汇。

set可以看成數(shù)學(xué)意義上的無(wú)序和無(wú)重復(fù)元素的集合,因此畅蹂,兩個(gè)set可以做數(shù)學(xué)意義上的交集健无、并集等操作:

>>> s1 = set([1,2,3])

>>> s2 = set([2,3,4])

>>> s1 & s2

{2,3}

>>> s1 | s2

{1,2,3,4}

9.再議不可變對(duì)象

首先我們知道str是不可變對(duì)象,list是可變對(duì)象液斜,對(duì)于可變對(duì)象比如list進(jìn)行操作累贤,list內(nèi)部?jī)?nèi)容是會(huì)變化的。而對(duì)不可變的對(duì)象比如str了少漆?看下面的代碼:

>>> a ='abc'

>>> b = a.replace('a','A')

>>> b

'Abc'

>>> a

'abc'

解釋:a是變量臼膏,'abc'是字符串對(duì)象,a本身是變量示损,他指向的內(nèi)容是才是'abc':調(diào)用replace方法確實(shí)作用在字符串對(duì)象上渗磅,但卻沒(méi)有改變字符串‘a(chǎn)bc’內(nèi)容,相反replace創(chuàng)建了一個(gè)新字符串‘Abc’并返回检访。

所以始鱼,對(duì)于不變對(duì)象來(lái)說(shuō),調(diào)用對(duì)象自身的任意方法脆贵,也不會(huì)改變?cè)搶?duì)象自身的內(nèi)容医清。相反,這些方法會(huì)創(chuàng)建新的對(duì)象并返回卖氨,這樣会烙,就保證了不可變對(duì)象本身永遠(yuǎn)是不可變的负懦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市柏腻,隨后出現(xiàn)的幾起案子纸厉,更是在濱河造成了極大的恐慌,老刑警劉巖五嫂,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颗品,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡贫导,警方通過(guò)查閱死者的電腦和手機(jī)抛猫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)蟆盹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)孩灯,“玉大人,你說(shuō)我怎么就攤上這事逾滥》宓担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵寨昙,是天一觀的道長(zhǎng)讥巡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)舔哪,這世上最難降的妖魔是什么欢顷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮捉蚤,結(jié)果婚禮上抬驴,老公的妹妹穿的比我還像新娘。我一直安慰自己缆巧,他們只是感情好布持,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著陕悬,像睡著了一般题暖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捉超,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天胧卤,我揣著相機(jī)與錄音,去河邊找鬼拼岳。 笑死枝誊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的裂问。 我是一名探鬼主播侧啼,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼牛柒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了痊乾?” 一聲冷哼從身側(cè)響起皮壁,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哪审,沒(méi)想到半個(gè)月后蛾魄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湿滓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年滴须,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叽奥。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扔水,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朝氓,到底是詐尸還是另有隱情魔市,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布赵哲,位于F島的核電站待德,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏枫夺。R本人自食惡果不足惜将宪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望橡庞。 院中可真熱鬧较坛,春花似錦、人聲如沸毙死。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扼倘。三九已至确封,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間再菊,已是汗流浹背爪喘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纠拔,地道東北人秉剑。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像稠诲,于是被迫代替她去往敵國(guó)和親侦鹏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诡曙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361