Python基础学习3
6 模塊和包
(1)????命名以.py結(jié)尾的文件就是Python模塊
Python的包就是一個(gè)文件夾,至少有還有一個(gè)__init__.py的文件
包中可以有文件夾,文件夾中可以有包
(2)????文件的導(dǎo)入
每使用一個(gè)變量名或者函數(shù)時(shí),就需要導(dǎo)入另一個(gè)文件
例:從mian.py中導(dǎo)入lib文件下的一個(gè)函數(shù),現(xiàn)在想從mian.py中使用do_parse函數(shù)
在編譯器下通過運(yùn)行python main.py從而運(yùn)行main.py,和main.py在同一個(gè)目錄下面的其他包可以被導(dǎo)入使用,現(xiàn)在要導(dǎo)入lib中的do_parse函數(shù),需要在mian.py的源代碼中寫 from lib.parse import do_parse(parse是lib包下面的一個(gè).py文件,do_parse是該文件下的一個(gè)函數(shù))
第三方包的導(dǎo)入
如果lib不在同一個(gè)目錄下,Python可能找不到,可以使用from .xxx(用.表示當(dāng)前模塊下的,另外還有..就是當(dāng)前模塊的上一目錄下)
如果第一次導(dǎo)入的時(shí)候,會(huì)執(zhí)行剛剛的代碼,但是如果第二次導(dǎo)入的時(shí)候,就不會(huì)第二次執(zhí)行了
(3)????Python2的特有導(dǎo)入
如果是同包的目錄下,就不用使用.號(hào),但是不建議使用
(4)????使用小技巧
dir(模塊):查看模塊屬性
如:在Linux下進(jìn)入Python,執(zhí)行(sys是一個(gè)系統(tǒng)包)(可以把sys暫時(shí)理解為一個(gè)對(duì)象):import sys->dir(sys)下面會(huì)彈出一系列的變量名,此時(shí)可是執(zhí)行:type(sys.version)查看version的屬性這里顯示的是str,意思是version是str類型的。如果執(zhí)行type(sys.getsizeof),此時(shí)顯示的getsizeof是一個(gè)函數(shù),如下圖
技巧2
每個(gè)內(nèi)置的模塊都有一個(gè)內(nèi)置的變量,以雙下劃線開頭,雙下劃線結(jié)尾的__name__,不用定義可以直接使用,一般是一個(gè)str類型,即每一個(gè).py下都有一個(gè)內(nèi)置變量,如果是入口模塊的話(模塊就是一個(gè).py文件),它的內(nèi)置變量就固定為__main__,如果使用if __name__==”__main__”就可以判斷這個(gè)模塊是否為入口模塊
7 高級(jí)數(shù)據(jù)結(jié)構(gòu)
(1)????元組
與列表很相似,定義時(shí)把中括號(hào)改成小括號(hào),只不過元組的內(nèi)容不可變,可以理解為常量,注意(2)不是元組,而應(yīng)該使用(2,),這個(gè)是只有一個(gè)元素的元組的寫法
(2)????字典
想要表示映射的關(guān)系
用{}括起來,如
{
“123”:123
456:”hello”
}
注意冒號(hào)左邊是常量,叫做鍵,冒號(hào)右邊是常量或者變量,叫做值,可以講上式寫成一行a={“123”:123,456:”hello”}。如果我們想使用字典里面的值,則使用a[“123”],字典取值,得到了123.如果想要改變字典中的值的話,則使用a[“123”]=”world”,字典設(shè)置值。特性是速度非常快
(3)????字符串
字符串可以理解為一個(gè)特殊的列表,列表中的每個(gè)元素就是一個(gè)字符,字符串也是一個(gè)常量,我們無法修改其值。字符串可以截獲使用,如a=”hello world”,可以使用a[:5]獲取前五個(gè)值的這樣的一個(gè)新的字符串進(jìn)行使用。
字符串的占位符替換
如a=”hello %s” % “world”:這樣的話,就把%s替換成world。如果要替換多個(gè)值可以使用如下的方式a=”%s %s” % {“hello” “world”}(列表的形式進(jìn)行替換)。關(guān)鍵字替換:a=”%(a)s%(b)s” % {a:”hello”,b:”world”}(字典形式進(jìn)行替換)。
(4)????函數(shù)中使用元組和字典
當(dāng)函數(shù)返回多個(gè)值時(shí),實(shí)際上返回的就是一個(gè)元組。把一個(gè)元組賦值給其他變量時(shí),就是一個(gè)拆包的過程。如果我們定義了一個(gè)相加的函數(shù)add(),此時(shí)可以使用元組進(jìn)行傳參,使用方法如下:定義元組nums=(1,2)
使用函數(shù)和元組add(*nums),實(shí)際上就是把nums替換成了1,2
使用字典和函數(shù)
param={“a”:1,”b”:2}
param(**param)->param(a=1,b=2)
8 類和對(duì)象
出來模塊和函數(shù)的形式外,在我們構(gòu)建大型項(xiàng)目的時(shí)候,我們學(xué)會(huì)使用類和對(duì)象的形式
(1)????創(chuàng)建類
class cat(object):
leg_cnt=4??????? #類屬性
def __init__(self,cat_name):??????#init的名字固定,整條語句不可變,固定是實(shí)例的創(chuàng)建過程,self固定格式,不可變,self就是一個(gè)實(shí)例化的對(duì)象
??? self.name=cat_name???????? #name是附屬于self實(shí)例的一個(gè)變量,使用的方式就是這種形式
def change_name(self,cat_name):??##一個(gè)參數(shù)一定是self,第一個(gè)參數(shù)可變,課不用,看自己的需求,這樣的一個(gè)函數(shù)就是一個(gè)方法
(2)????使用類(類的實(shí)例化)
使用tom=Cat(“Tom”):進(jìn)行實(shí)例化,,此時(shí)tom是一個(gè)對(duì)象
方法的調(diào)用:tom.change_name(“xiaohei”)
對(duì)象的固有屬性:就是在定義類的時(shí)候,已經(jīng)說明leg_cnt=4,所以tom中已經(jīng)存在leg_cnt=4
(3)????類的繼承
class MyCat(Cat):??????????????????????? ?#讓貓實(shí)例化
def __init__(self,cat_name):??????????
??? surper(Mycat,self),__init__name????
def jump(self)
??? printf(“try jump”)
???? jack=MyCat(“jack”)
???? jack.jump()
???? jack.climb()
9 文件處理
(1)????寫入文件
比如我在某一文件夾下面創(chuàng)建了一個(gè)新的文件pome.txt,并在該文件里面寫入了內(nèi)容,可以使用f=open(‘\\\’,’w’)??? #\\\是文件路徑,而w(寫入)是打開的屬性,還有r(讀取),a(追加)
接著使用f.write(pome)文件的一個(gè)寫入方法,然后使用f.colse()進(jìn)行文件的關(guān)閉
(2)讀取文件
f.open(‘文件的路徑’)
? while Ture
???? line=f.readline()???? #讀取一行內(nèi)容
???? if len(line) == 0:
???????? break
???? printf(line,end=””)?? #替換了內(nèi)置的換行符,因?yàn)閜rintf()的后面會(huì)內(nèi)置一個(gè)換行符
? f.close()?#關(guān)閉文件
? (3)with語句
?? with open(‘\\\’,’w’) as f:
?????? f.write
? 因?yàn)榧恿艘粋€(gè)with語句,當(dāng)with結(jié)束時(shí),會(huì)自動(dòng)關(guān)閉文件
10 異常處理
(1)????將異常包裝成一個(gè)對(duì)象,這些對(duì)象有一個(gè)基類Exception
捕獲異常對(duì)象一
try:
? ….?? #可能會(huì)出現(xiàn)異常的錯(cuò)誤代碼
except (一個(gè)錯(cuò)誤類名稱內(nèi)置的) ase:
printf(e)???? #處理這個(gè)異常
except Exception(這個(gè)是異常的基類):
?? #處理異常代碼,如打印
else:
??? #沒有異常的情況的代碼
?
捕獲異常2
try :
一段可能出錯(cuò)的代碼
finally:
??? #最后一定會(huì)執(zhí)行這個(gè)語句
?
另外還可以raisee?? #就是拋出異常
實(shí)例演示:在Linux下使用vim創(chuàng)建一個(gè)a.py的文件,然后輸入如下代碼
保存退出后,執(zhí)行pythona.py 會(huì)顯示拋出異常
如果想繼續(xù)拋出異常,就可是使用如下
此時(shí)執(zhí)行,又會(huì)拋出異常的處理
?
總結(jié)
以上是生活随笔為你收集整理的Python基础学习3的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。