Python語言入門

基礎(chǔ)

使用#完成注釋

引號的下一行如果有縮進(jìn)拙寡,視為代碼塊庐橙。

布爾值為True,F(xiàn)alse

布爾值運算符為and怯伊,or琳轿,not

空值為None

Python中無常量定義,如表示常量,應(yīng)該寫為大寫字母崭篡,但仍可修改值挪哄。

Python中有兩種除法,/為浮點除琉闪,運算結(jié)果為浮點數(shù)迹炼,//為地板除,運算結(jié)果為整數(shù)

ASCII碼颠毙,Unicode編碼斯入,UTF-8編碼

在計算機(jī)內(nèi)存中,統(tǒng)一使用Unicode編碼蛀蜜,當(dāng)需要保存到硬盤或者需要傳輸時刻两,就轉(zhuǎn)換為UTF8編碼

ord與chr

python中的str與bytes

以Unicode表示的str通過encode()方法可以編碼為指定的bytes,使用decode()方法將bytes轉(zhuǎn)為str

list與tuple元組

classmates =['1','2','3']

Classmates=('1','2','3')

python中下標(biāo)從0開始滴某,可以用負(fù)下標(biāo)

tuple一旦初始化就不能修改

只有1個元素的tuple定義時必須加個逗號磅摹,來消除歧義。

Input()返回的數(shù)據(jù)類型為str

python循環(huán)分為for和while兩種霎奢,可使用break與continue語句

For x in list:

Xxx

While True:

Xxx

dict與set

d={'M':1,'N':2,'O':3}

可使用in與get判斷dict中某元素是否存在

set與dict類似户誓,也是一組key的集合,但不存儲value

set中元素不可重復(fù)椰憋,要創(chuàng)建一個set厅克,需要提供一個list作為輸入集合

s=set([1,2,3])

不可變對象

函數(shù)定義

Def my_abs(x):

pass語句,空操作

判斷變量類型isinstance(x, (int, float))

python中函數(shù)可以返回多個值橙依,這些值以tuple元組的形式返回

Python還可以使用默認(rèn)參數(shù)证舟,可變參數(shù)和關(guān)鍵字參數(shù)

Def power(x, m=3,n=2)

調(diào)用時窗骑,power(x, n=2)

定義默認(rèn)參數(shù)時女责,默認(rèn)參數(shù)必須指向不可變對象

可變參數(shù)

Def calc(*numbers)

在函數(shù)內(nèi)部,numbers接收到的是一個tuple

python允許在list或tuple前面加一個*號创译,把list或tuple的元素變成可變參數(shù)傳進(jìn)去抵知。

關(guān)鍵字參數(shù)允許傳入0個或任意個含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict

Def person(name,age, **kw)

Extra={'1':1,'2':2,'3':3}

Person('name',11,**extra);此時kw將獲得extra的一份拷貝

python可以限制關(guān)鍵字參數(shù)的名字软族,稱為命名關(guān)鍵字參數(shù)

Def person(name,age,*,city,job);*后參數(shù)視為命名關(guān)鍵字參數(shù)

python中參數(shù)定義順序必須是:必選參數(shù)刷喜,默認(rèn)參數(shù),可變參數(shù)立砸,命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)

遞歸調(diào)用的次數(shù)過多掖疮,會導(dǎo)致棧溢出。

解決遞歸調(diào)用棧溢出的方法是通過尾遞歸優(yōu)化颗祝。

尾遞歸是指在函數(shù)返回的時候調(diào)用自身本身浊闪,并且return語句不能包含表達(dá)式恼布,編譯器或解釋器會做相應(yīng)優(yōu)化。

遺憾的是搁宾,大多數(shù)編程語言沒有針對尾遞歸做優(yōu)化折汞,Python解釋器也沒有做優(yōu)化。

高級特性

在Python中盖腿,代碼不是越多越好爽待,而是越少越好。代碼不是越復(fù)雜越好奸忽,而是越簡單越好堕伪。

切片输瓜,與Matlab中取元素相似

tuple也可以做切片操作卧波,但操作結(jié)果仍是tuple

字符串也可以做切片操作饮笛,但操作結(jié)果仍是字符串

判斷一個對象是否是可迭代對象,isinstance(x,Iterable);

python內(nèi)置的enumerate函數(shù)可以把一個list變成索引-元素對

列表生成式疙筹,List Comprehension,是Python內(nèi)置的非常簡單卻強(qiáng)大的可以用來創(chuàng)建list的生成式

List(range(1,100))

[x*x, for x in range(1,100)]

[x*x, for x in range(1,100) if x%2==0]

[m*n, for m in range(1,100) for n in range(1,100)]

[d for d in os.listdir('.')]

d={}

[k+'='+v for k,v in d.items()]

[s.lower() for s in L]

Python中一邊循環(huán)一邊計算的機(jī)制禁炒,稱為生成器而咆,generator

將列表生成式的[]改為(),就創(chuàng)建了一個generator幕袱,可使用next()函數(shù)獲得generator的下一個返回值

如果一個函數(shù)定義中包含yield關(guān)鍵字暴备,那么這個函數(shù)就不再是一個普通函數(shù),而是一個generator们豌,可使用next()不斷獲取yield返回的值

可直接作用于for循環(huán)的數(shù)據(jù)類型有以下幾種:

一類是集合類數(shù)據(jù)類型涯捻,如list、tuple望迎、dict障癌、set、str等

一類是generator辩尊,包括生成器和帶yield的generator function

Iterable vs Iterator

可以被next函數(shù)調(diào)用并不斷返回下一個值得對象稱為迭代器涛浙,Iterator

Iter()可將非Iterator的Iterable對象轉(zhuǎn)換為Iterator

函數(shù)式編程

Python對函數(shù)式編程提供部分支持

函數(shù)式編程的一大特點是,允許把函數(shù)本身作為參數(shù)傳入另一個函數(shù)摄欲,還允許返回一個函數(shù)

高階函數(shù) Higher-Order function

把函數(shù)作為參數(shù)傳入轿亮,這樣的函數(shù)稱為高階函數(shù),函數(shù)式編程就是指這種高度抽象的編程范式胸墙。

Map/reduce

Filter用于過濾序列我注,返回值為True保留該元素

Iterator是惰性計算的序列

Sorted,擴(kuò)展功能的參數(shù)有key與reverse

提供閉包功能

關(guān)鍵字lambda表示匿名函數(shù)劳秋,冒號前面的x表示函數(shù)參數(shù)

Lambda x:x*x

相當(dāng)于

Def f(x):

Return x*x

函數(shù)對象有一個__name__屬性仓手,可拿到函數(shù)名字

在代碼運行期間動態(tài)增加功能的方式胖齐,稱為裝飾器Decorator

本質(zhì)上,decorator是一個返回函數(shù)的高階函數(shù)嗽冒,

@log

Def now():

Xxx

相當(dāng)于now=log(now)

偏函數(shù)

Int2=functools.partial(int, base=2)

模塊

Python中呀伙,一個.py文件稱為一個模塊module

為了避免模塊名沖突,python又引入了按目錄來組織模塊的方法添坊,稱為包Package

python中安裝第三方模塊剿另,是通過包管理工具pip完成的

面向?qū)ο缶幊?/p>

Class Student(object):

Def __init__(self,…):

Xxx

Def print(self):

xxx

判斷對象類型

isinstance()

type()

dir()獲取對象的所有屬性與方法

getattr(), setattr(),hasattr()

相同名稱的實例屬性將屏蔽掉類屬性

面向?qū)ο蟾呒壘幊?/p>

為了限制動態(tài)綁定類的屬性,Python允許在定義類的時候贬蛙,定義一個特殊的__slots__變量雨女,來限制該class實例能添加的屬性

Python內(nèi)置的@property裝飾器就是負(fù)責(zé)把一個方法變成屬性調(diào)用的

在設(shè)計類的時候,我們優(yōu)先考慮通過多重繼承來組合多個mixin的功能阳准,而不是設(shè)計多層次的復(fù)雜的繼承關(guān)系氛堕。

定制類

__str__, __repr__,__iter__, __next__,__getitem__,__getattr__,__call__,

使用枚舉類

Month = Enum('Month',('Jan','Feb',))

使用元類

type()可動態(tài)創(chuàng)建類型

Hello=Type('Hello',(object),dict(hello=fn))

先定義metaclass野蝇,再創(chuàng)建類讼稚,最后創(chuàng)建實例

錯誤,調(diào)試和測試

try:

except Exception as e:

finally:

Python內(nèi)置的logging模塊可以方便地記錄錯誤信息

拋出錯誤绕沈,raise 锐想。。乍狐。

三種調(diào)試方法

使用print

使用assert

使用logging

使用pdb

IO編程

With open('file path') as f:

StringIO和BytesIO是在內(nèi)存中操作str和bytes的方法赠摇,使得和讀寫文件具有一致的接口。

Python的os模塊封裝了操作系統(tǒng)的目錄和文件操作浅蚪,要注意這些函數(shù)有的在os模塊中藕帜,有的在os.path模塊中。

Python語言特定的序列化模塊是pickle掘鄙,但如果要把序列化搞得更通用耘戚、更符合Web標(biāo)準(zhǔn),就可以使用json模塊操漠。

virtualenv

virtualenv就是用來為一個應(yīng)用創(chuàng)建一套“隔離”的Python運行環(huán)境收津。

pip3 install virtualenv

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市浊伙,隨后出現(xiàn)的幾起案子撞秋,更是在濱河造成了極大的恐慌,老刑警劉巖嚣鄙,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吻贿,死亡現(xiàn)場離奇詭異,居然都是意外死亡哑子,警方通過查閱死者的電腦和手機(jī)舅列,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門肌割,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帐要,你說我怎么就攤上這事把敞。” “怎么了榨惠?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵奋早,是天一觀的道長。 經(jīng)常有香客問我赠橙,道長耽装,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任期揪,我火速辦了婚禮掉奄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凤薛。我一直安慰自己挥萌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布枉侧。 她就那樣靜靜地躺著,像睡著了一般狂芋。 火紅的嫁衣襯著肌膚如雪榨馁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天帜矾,我揣著相機(jī)與錄音翼虫,去河邊找鬼。 笑死屡萤,一個胖子當(dāng)著我的面吹牛珍剑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播死陆,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼招拙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了措译?” 一聲冷哼從身側(cè)響起别凤,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎领虹,沒想到半個月后规哪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡塌衰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年诉稍,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝠嘉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡杯巨,死狀恐怖蚤告,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舔箭,我是刑警寧澤罩缴,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站层扶,受9級特大地震影響箫章,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜镜会,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一檬寂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧戳表,春花似錦桶至、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至价涝,卻和暖如春女蜈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背色瘩。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工伪窖, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人居兆。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓覆山,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泥栖。 傳聞我的和親對象是個殘疾皇子簇宽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容