Python語法基礎(chǔ)

Python語法基礎(chǔ)

數(shù)據(jù)對(duì)象和組織

  • 對(duì)現(xiàn)實(shí)世界實(shí)體和概念的抽象
  1. 簡單類型(表示):整數(shù)—int、浮點(diǎn)數(shù)—float、復(fù)數(shù)—complex、邏輯值—bool手销、字符串—str
  2. 容器類型(組織):列表—list、元組—tuple图张、集合—set锋拖、字典—dict
  3. 數(shù)據(jù)類型之間大都可以轉(zhuǎn)換

賦值和控制流

  • 對(duì)現(xiàn)實(shí)世界處理和過程的抽象
  1. 運(yùn)算語句(處理與暫存):表達(dá)式計(jì)算诈悍、函數(shù)調(diào)用、賦值
  2. 控制流語句(組織語句描述過程):循環(huán)兽埃、條件分支侥钳、順序
  3. 定義語句也用來組織語句,描述一個(gè)包含一系列處理過程的計(jì)算單元:函數(shù)定義讲仰、慕趴、類定義

python數(shù)據(jù)類型

  1. 整數(shù)int:不受大小限制
  2. 浮點(diǎn)數(shù)float:受到17位有效數(shù)字的限制
  • 整數(shù)與浮點(diǎn)數(shù)有常見的運(yùn)算包括加(+)、減(-)鄙陡、乘(*)冕房、除(/)、整除(//)趁矾、求余(%)耙册、指數(shù)冪等
  • 一些常用數(shù)學(xué)函數(shù)在math模塊中
import math
a=math.sqrt(4)
#a=2
  1. 復(fù)數(shù):python內(nèi)置對(duì)復(fù)數(shù)的計(jì)算
  • 支持所有常見的復(fù)數(shù)計(jì)算
  • 對(duì)復(fù)數(shù)處理的數(shù)學(xué)函數(shù)在模塊cmath中
import cmath
a=cmath.sqrt(1+2j)
#a的值為復(fù)數(shù)1+2i開根號(hào)
  1. 邏輯值(bool):邏輯值僅包括True/False兩個(gè)
  • 配合if/while等語句做條件判斷
  • 其他數(shù)據(jù)類型可以轉(zhuǎn)化為邏輯值,如0與非0等
bool(0)#False
bool(999)#True
  1. 字符串:python中字符串不能修改只能產(chǎn)生新的字符串
  • 用單引號(hào)和雙引號(hào)都可以表示字符串
  • 多行字符串用三個(gè)連續(xù)的單引號(hào)表示
  • 特殊字符用轉(zhuǎn)移符號(hào)""表示
  • 字符串基本操作:連接(+)毫捣、復(fù)制(*)详拙、長度(len)、[start:end:step]用來切片(提取一部分)
  • 高級(jí)操作:分割(split)蔓同、合并(join)饶辙、大小寫相關(guān)(upper/lower/swapcase)、替換字符(replace)等等
>>> 'a b c d'.split(' ')
['a', 'b', 'c', 'd']
>>> 'abc'.upper()
'ABC'
  1. 列表和元組
  • python中有幾種類型是一系列元素組成的序列斑粱,以整數(shù)作為索引
  • 字符串str就是一種同類元素的序列
  • 列表list和元組tuple則可以容納不同類型的元素弃揽,構(gòu)成序列
  • 元組是不能更新的序列(字符串也是)
  • 列表則可以刪除、添加则北、替換矿微、重排序列中的元素
    image
  • 創(chuàng)建列表:[]或者list()
  • 創(chuàng)建元組:()或者tuple()
  • 用索引[n]獲取元素(列表可變)
  • +:連接列表/元組
  • *:復(fù)制n次罢维,生成新列表/元組
  • len():元素個(gè)數(shù)
  • in:某個(gè)元素是否存在
  • [start:end:step]:切片
方法名稱 使用例子 說明
append alist.append(item) 列表末尾添加元素
insert alist.insert(i,item) 列表中i位置插入元素
pop alist,pop() 刪除最后一個(gè)元素
sort alsit.sort() 將表中元素排序
reverse alist.reverse() 將列表元素反向排序
del del.alist[i] 刪除第i個(gè)元素
indx alist.index(item) 找到item的首次出現(xiàn)位置
count alsit.count(item) 返回item在列表出現(xiàn)的次數(shù)
remove alist.remove(item) 將item的首次出現(xiàn)刪除
  1. 集合set:集合是不重復(fù)元素的無序組合
  • 用set()創(chuàng)建空集
  • 用set()從其他序列轉(zhuǎn)化生成集合
  • 集合的常見操作:
    in:判斷元素是否屬于集合坝疼、
    |,union():并集朗徊、
    &快骗,intersection():交集
    -娜庇,difference():差集
    ^,symmetric_difference():異或
    <=,<,>=,>:子集方篮,真子集思灌,超集,真超集
  1. 字典dict:
  • 字典是通過鍵值key來索引元素value恭取,而不是像列表是通過連續(xù)的整數(shù)來索引
  • 字典是可變類型
  • 字典中元素value沒有順序,可以是任意類型
  • 字典中的key可以是不可變類型(數(shù)值/字符串/元組)

python變量機(jī)制

  1. 引用數(shù)據(jù)對(duì)象
  • 賦值語句a=0熄守,實(shí)際上是創(chuàng)建了名為a的變量蜈垮,然后指向數(shù)據(jù)對(duì)象“0”
  • 所以變量可以隨時(shí)指向任何一個(gè)數(shù)據(jù)對(duì)象耗跛,如True,1.02等(這和靜態(tài)語言完全不同)
  • 變量的類型隨著指向的數(shù)據(jù)對(duì)象類型改變而改變攒发。
  1. 可變類型的變量引用情況
  • 由變量的引用特性调塌,可變類型的變量操作需要注意的是,多個(gè)變量通過賦值引用同一個(gè)可變類型對(duì)象時(shí)惠猿,通過任何一個(gè)變量改變了可變類型羔砾,其他變量也看到了改變

常用的連續(xù)序列生成器:range函數(shù)

  • range(n):從0到n-1的序列
  • range(start,end):從start到end-1的序列
  • range(start,end,step)
  • range函數(shù)返回range類型的對(duì)象,可以直接當(dāng)作序列使用偶妖,也可以轉(zhuǎn)換為list或者tuple等容器類型

建立大型數(shù)據(jù)結(jié)構(gòu)

  • 嵌套列表:列表的元素是一些列表姜凄,可以通過alsit[i][j]來索引
  • 字典元素可以是任意類型,所以也可以是字典
  • 字典的鍵值可以是任意不可變類型趾访。
>>> alist=[[1,2,3],[True,'ab']]
>>> alist[0][2]
3
>>> adict={'a':['1','2'],'b':[True,'sun']}
>>> adict['b'][0]
True

輸入和輸出:input/print函數(shù)

  • input(prompt):顯示提示信息prompt态秧,輸入內(nèi)容以字符串形式返回
  • print(v1,v2,v3,...):打印各變量的值輸出,可以帶參數(shù)end(結(jié)尾)和sep(字符串之間)
  • 格式化字符串:'%d %s' % (v1,v2)

運(yùn)算語句:表達(dá)式扼鞋、函數(shù)調(diào)用申鱼、賦值

  • 各類型的數(shù)據(jù)對(duì)象,可以通過各種運(yùn)算組織成復(fù)雜的表達(dá)式
  • 調(diào)用函數(shù)或?qū)ο笤仆罚部梢苑祷財(cái)?shù)據(jù)捐友,所有可調(diào)用的事物稱為callable(調(diào)用函數(shù)或?qū)ο螅枰谄涿Q后加圓括號(hào)溃槐,有參數(shù)匣砖,寫在括號(hào)里,不加圓括號(hào)的函數(shù)或?qū)ο髢H表示自己竿痰,而不是調(diào)用)
  • 將表達(dá)式或調(diào)用返回值傳遞給變量進(jìn)行引用脆粥,稱為賦值

控制流語句

  1. 條件if
if <邏輯條件>:
    <語句塊>
elif <邏輯條件>:#可多個(gè)elif
    <語句塊>
else:#只能一個(gè)
    <語句塊>
  1. while循環(huán)
while <邏輯條件>:
    <語句塊>
    break #跳出循環(huán)
    continue #略過余下循環(huán)語句
    <語句塊>
else: #條件不滿足推出循環(huán),執(zhí)行下面代碼
    <語句塊>
  1. for循環(huán)
for <變量> in <可迭代對(duì)象>:
    <語句塊>
    break #跳出循環(huán)
    continue #略過余下循環(huán)語句
    <語句塊>
else: #迭代完畢則執(zhí)行下面語句
    <語句塊>

推導(dǎo)式

  • 可以用來生成列表影涉、字典变隔、集合的語句
  1. [<表達(dá)式> for <變量> in <可迭代對(duì)象> if <邏輯條件>]
  2. {<鍵值表達(dá)式>:<元素表達(dá)式> for <變量> in <可迭代對(duì)象> if <邏輯條件>}
  3. {<元素表達(dá)式> for <變量> in <可迭代對(duì)象> if <邏輯條件>}

生成式推導(dǎo)式

  • 與推導(dǎo)式一樣語法(但是用的是圓括號(hào))
    (<元素表達(dá)式> for <變量> in <可迭代對(duì)象> if <邏輯條件>)
  • 返回一個(gè)生成器對(duì)象,也是可迭代對(duì)象蟹倾,但不會(huì)立即產(chǎn)生全部元素匣缘,僅在要用到元素的時(shí)候才生成,可以極大節(jié)省內(nèi)存

例外處理Exception Handing

  • 代碼運(yùn)行可能出現(xiàn)的錯(cuò)誤
  1. 語法錯(cuò)誤:Syntax Error
  2. 除以0錯(cuò)誤:ZeroDivionError
  3. 列表下標(biāo)越界:IndexError
  4. 類型錯(cuò)誤:TypeError
  • 錯(cuò)誤會(huì)引起一些不必要的麻煩鲜棠,如果希望掌控意外錯(cuò)誤肌厨,就需要在可能出錯(cuò)的地方設(shè)置陷阱捕捉錯(cuò)誤,引入try豁陆,except方式
    try: #若出錯(cuò)柑爸,則執(zhí)行except后的語句
    except: #處理錯(cuò)誤代碼
    else: #沒有出錯(cuò)執(zhí)行下面的代碼
    finally: #無論出錯(cuò)否,都執(zhí)行的代碼

函數(shù)function

# def語句:
def <函數(shù)名>(<參數(shù)表>):
    <縮減的要執(zhí)行的代碼>
    return<函數(shù)返回值>
# 調(diào)用函數(shù):
<函數(shù)名>(<參數(shù)表>)# 無返回值
v=<函數(shù)名>(<參數(shù)表>)# 返回值賦值給變量v

定義函數(shù)的參數(shù):固定參數(shù)/可變參數(shù)

  • 定義函數(shù)時(shí)盒音,參數(shù)可以有兩種表鳍;一種是參數(shù)表中寫明了參數(shù)名key的參數(shù)馅而,固定了順序和數(shù)量
def func(key1,key2,key3=value3....):

一種是定義時(shí)還不知道會(huì)有多少參數(shù)傳入的可變參數(shù)

def func1(*args): #不帶key的多個(gè)參數(shù)

def func2(**kwargs): #帶key=val形式的多個(gè)參數(shù)

調(diào)用函數(shù)的參數(shù):位置參數(shù)/關(guān)鍵字參數(shù)

  • 調(diào)用函數(shù)時(shí),可以傳進(jìn)兩種參數(shù)譬圣;一種是沒有名字的位置參數(shù)(會(huì)按前后順序?qū)?yīng))瓮恭,一種是指定了key值的關(guān)鍵字參數(shù)
  • 如果混用,位置參數(shù)必須在關(guān)鍵字參數(shù)前

面向?qū)ο螅侯惖亩x與調(diào)用

  • 類用來實(shí)現(xiàn)抽象數(shù)據(jù)類型ADT厘熟,封裝實(shí)體的屬性和行為
#定義類
class <類名>:
    def __init__(self,<參數(shù)表>):
    def <方法名>(self,<參數(shù)表>)
#調(diào)用類
obj=<類名>(<參數(shù)表>)
#返回一個(gè)對(duì)象實(shí)例屯蹦,類方法中的self指這個(gè)對(duì)象實(shí)例

類定義中的特殊方法

  • 在類定義中實(shí)現(xiàn)一些特殊方法,可以方便的使用一些python內(nèi)置操作(所有特殊方法以兩個(gè)下劃線開始結(jié)束)
  1. __str__(self): 自動(dòng)轉(zhuǎn)化為字符串
  2. __add__(self,other): 使用+操作符
  3. __mul__(self,other): 使用*操作符
  4. __eq__(self,other): 使用==操作符

類的繼承機(jī)制

  • 如果有兩個(gè)類具有“一般-特殊”的邏輯關(guān)系绳姨,那么特殊類就可以作為一般類的“子類”來定義登澜,從“繼承”屬性和方法
class <子類名>(<父類名>):#可以繼承多個(gè)父類
    def <重定義的方法的名稱>(self,...):
  • 子類對(duì)象可以調(diào)用父類方法,除非這個(gè)方法在子類中重新定義了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末就缆,一起剝皮案震驚了整個(gè)濱河市帖渠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竭宰,老刑警劉巖空郊,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異切揭,居然都是意外死亡狞甚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門廓旬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哼审,“玉大人,你說我怎么就攤上這事孕豹∩埽” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵励背,是天一觀的道長春霍。 經(jīng)常有香客問我,道長叶眉,這世上最難降的妖魔是什么址儒? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮衅疙,結(jié)果婚禮上莲趣,老公的妹妹穿的比我還像新娘。我一直安慰自己饱溢,他們只是感情好喧伞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般絮识。 火紅的嫁衣襯著肌膚如雪绿聘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天次舌,我揣著相機(jī)與錄音,去河邊找鬼兽愤。 笑死彼念,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浅萧。 我是一名探鬼主播逐沙,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洼畅!你這毒婦竟也來了吩案?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤帝簇,失蹤者是張志新(化名)和其女友劉穎徘郭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丧肴,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡残揉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芋浮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抱环。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖纸巷,靈堂內(nèi)的尸體忽然破棺而出镇草,到底是詐尸還是另有隱情,我是刑警寧澤瘤旨,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布梯啤,位于F島的核電站,受9級(jí)特大地震影響裆站,放射性物質(zhì)發(fā)生泄漏条辟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一宏胯、第九天 我趴在偏房一處隱蔽的房頂上張望羽嫡。 院中可真熱鬧,春花似錦肩袍、人聲如沸杭棵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽魂爪。三九已至先舷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滓侍,已是汗流浹背蒋川。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撩笆,地道東北人捺球。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像夕冲,于是被迫代替她去往敵國和親氮兵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355