類模塊補(bǔ)充材料_第1頁
類模塊補(bǔ)充材料_第2頁
類模塊補(bǔ)充材料_第3頁
類模塊補(bǔ)充材料_第4頁
類模塊補(bǔ)充材料_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

python類和模塊楊志峰環(huán)境:Anacondapython3.6開發(fā)工具:pycharm類一、數(shù)據(jù)類型二、層次結(jié)構(gòu)三、設(shè)計模式四、模塊一、數(shù)據(jù)類型內(nèi)置數(shù)據(jù)類型類型名實例(instance)方法(method)整型inta=1ora=int(1)四則運算等浮點型floatb=0.5orb=float(0.5)四則運算等字符串型strc=‘Hello’orc=str(‘Hello’)字符串截取等列表listd=[]ord=list()添加、刪除元素等字典dicte={}ore=dict()添加、刪除元素等一、數(shù)據(jù)類型例1,list這個類型。(data_type.py)創(chuàng)建一個list實例,data=[1,2,3]。加入一個元素,data.append(1)。刪除這個實例,deldata或者程序運行結(jié)束時自動銷毀這個實例。del用在想節(jié)省內(nèi)存的時候。

‘.’運算符的用法:①.前面是一個實例(或類型),后面是屬于這個類型的方法。②.訪問模塊中的包。一、數(shù)據(jù)類型對于一個數(shù)據(jù)類型知道的不知道的1.類型名2.怎樣創(chuàng)建和刪除一個實例3.與這個數(shù)據(jù)類型有關(guān)的方法1.類型中,數(shù)據(jù)的內(nèi)部表示2.屬于類的方法的具體細(xì)節(jié)一、數(shù)據(jù)類型體現(xiàn)了封裝的思想,數(shù)據(jù)類型給外界暴露方法,隱藏內(nèi)部細(xì)節(jié)。對于特定問題,內(nèi)置數(shù)據(jù)類型可能不夠用或者用起來很麻煩。我們可以自定義數(shù)據(jù)類型,將數(shù)據(jù)和作用于它們上的方法綁定在一起,構(gòu)造一個新數(shù)據(jù)類型。一、數(shù)據(jù)類型

一、數(shù)據(jù)類型1classCoordinate(object):2"""3

二維平面坐標(biāo)類。45可以求坐標(biāo)距離,比較坐標(biāo)大小。6

"""class用來定義類的關(guān)鍵字Coordinate是類名,類名以大寫字母開頭括號內(nèi)的object表示該類繼承object類:表示類的定義結(jié)束“”“…”“”表示注釋,寫類的內(nèi)部數(shù)據(jù),行為等空四個空格,表示下面是類的內(nèi)容一、數(shù)據(jù)類型綁定數(shù)據(jù)1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None__init__()是個特殊方法,用來定義怎樣創(chuàng)建類的實例。所有類都必須實現(xiàn)或者繼承這個方法。注意是雙下劃線。一般稱為構(gòu)造函數(shù)。用一些高級技巧可以繞過__init__()來創(chuàng)建對象,詳見pythoncookbook一、數(shù)據(jù)類型綁定數(shù)據(jù)1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None第一個參數(shù)self指這個類的一個實例。表示這個方法屬于這個類的一個實例。一、數(shù)據(jù)類型綁定數(shù)據(jù)1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None第一個參數(shù)后面的參數(shù),這里是x和y,可以將它們綁定在內(nèi)部數(shù)據(jù)上。形如(self.*)的數(shù)據(jù)稱為實例變量,屬于實例。一、數(shù)據(jù)類型綁定數(shù)據(jù)1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None所有的實例變量都應(yīng)在構(gòu)造函數(shù)內(nèi)賦值(初始化)。前兩句綁定傳入的數(shù)據(jù)。由于沒有傳入與name有關(guān)的數(shù)據(jù),將name賦值為None。一、數(shù)據(jù)類型創(chuàng)建實例1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None67data1=Coordinate(1,2)

8data2=Coordinate(-1,-1)用類名(不包含self的其他參數(shù))創(chuàng)建實例。一、數(shù)據(jù)類型直接訪問和修改內(nèi)部數(shù)據(jù)1data1=Coordinate(1,2)

2data2=Coordinate(-1,-1)3

4print(data1.x)

#訪問數(shù)據(jù)5data1.x=10#修改數(shù)據(jù)’.’運算符訪問實例中的實例變量。按照規(guī)范,避免用’.’運算符直接訪問和修改數(shù)據(jù)。為了簡單,可不遵守這個規(guī)范。動態(tài)綁定一個實例變量1data1.z=3

為了靈活性,python支持這種做法,很少用到。會造成data1和data2中實例變量不同。一、數(shù)據(jù)類型間接訪問和修改內(nèi)部數(shù)據(jù)1classCoordinate(object):

2defget_x(self):

3

returnself.x4defset_x(self,x):

5

self.x=x67data1.get_x()#訪問數(shù)據(jù)

Coordinate.get_x(data1)#另一種方式8data1.set_x(10)#修改數(shù)據(jù)Coordinate.set_y(data1,10)#另一種方式引入getter和setter方法。getter用于訪問數(shù)據(jù),setter用于修改數(shù)據(jù)。一、數(shù)據(jù)類型變量名前面加兩個下劃線,希望不被外界訪問。如果加一個下劃線,建議輕易不被外界訪問。對于方法來說也一樣。隱藏內(nèi)部數(shù)據(jù)表示,實現(xiàn)訪問控制。隱藏內(nèi)部表示1classCoordinate(object):2def__init__(self,x,y):

3

self.__x=x

4

self._y=y

5

self.name=None67data1=Coordinate(1,2)

8data2=Coordinate(-1,-1)9print(data1.__x)

!出錯10print(data1._Coordinate__x)#正確11print(data1._y)#正確python自動給加雙下劃線的變量或函數(shù),前面補(bǔ)上_類名一、數(shù)據(jù)類型計算兩個坐標(biāo)的歐式距離1classCoordinate(object):2

defdistance(self,other):

3

x_diff_sq=(self.x-other.x)**2

4

y_diff_sq=(self.y-other.y)**2

5

return(x_diff_sq+y_diff_sq)**0.567data1=Coordinate(1,2)

8data2=Coordinate(-1,-1)910length=data1.distance(data2)length=Coordinate.distance(data1,data2)#另一種方式

11print(length)傳入另一個Coordinate實例,計算兩個坐標(biāo)的歐式距離兩個坐標(biāo)相加整型這樣的基本數(shù)據(jù)類型可用’+’,但在坐標(biāo)類上’+’沒有定義,需要自定義坐標(biāo)類上的’+’運算。用重載(overload)擴(kuò)展’+’的支持的參數(shù)類型,使它支持坐標(biāo)類型相加。運算符/操作內(nèi)置函數(shù)重載后運算+__add__(self,other)self+other-__sub__(self,other)self-other==__eq__(self,other)self==other<__lt__(self,other)self<otherlen()__len__(self)len(self)print()__str__(self)print(self)迭代操作__iter__(self)或__getitem__(self,item)foreinlist:一、數(shù)據(jù)類型兩個坐標(biāo)相加1classCoordinate(object):2def__add__(self,other):

3

new_x=self.x+other.x

4

new_y=self.y+other.y

5

returnCoordinate(new_x,new_y)67data1=Coordinate(1,2)

8data2=Coordinate(-1,-1)9data3=data1+data2#即(0,1)data3=Coordinate.__add__(data1,data2)#另一種方式由于重載了’+’運算符,可以直接加兩個坐標(biāo)實例。執(zhí)行’+’操作時,判斷前面那個變量是Coordinate類的實例,因此調(diào)用Coordinate類的__add__(self,other)方法。一、數(shù)據(jù)類型輸出實例1classCoordinate(object):2def__str__(self):

3

return'('+str(self.x)+','+str(self.y)+')'45data1=Coordinate(1,2)6print(data1)#輸出(1,2)print(Coordinate.__str__(data3))#另一種方式由于重寫了類的字符串化函數(shù),print()發(fā)現(xiàn)參數(shù)是Coordinate實例,調(diào)用Coordinate類中的__str__(self)方法。一、數(shù)據(jù)類型特殊的數(shù)據(jù)—類變量1classCoordinate(object):2

record=13def__init__(self,x,y):

4

self.x=x

5

self.y=y

6

self.name=None

7

self.id=Coordinate.record

8

Coordinate.record+=1910data1=Coordinate(1,2)

11Coordinate.record=212data1.record=313print(Coordinate.record)#輸出2動態(tài)綁定實例變量,不影響類變量。類變量是所有實例共享的變量,是公共的數(shù)據(jù)。一、數(shù)據(jù)類型特殊的數(shù)據(jù)—類變量1classCoordinate(object):2

record=13def__init__(self,x,y):

4

self.x=x

5

self.y=y

6

self.name=None

7

self.id=Coordinate.record

8

Coordinate.record+=1910data1=Coordinate(1,2)

11data2=Coordinate(-1,-1)

12print(data1.id)#輸出1

13print(data2.id)#輸出2用來計數(shù),每創(chuàng)建一個實例,類變量加1。一、數(shù)據(jù)類型特殊的數(shù)據(jù)—類變量1classCoordinate(object):2

record=13def__init__(self,x,y):

4

self.x=x

5

self.y=y

6

self.name=None

7

self.id=Coordinate.record

8

Coordinate.record+=1910Coordinate.new_var=1

動態(tài)綁定類變量,很少用到。一、數(shù)據(jù)類型實例變量類變量①.在__init__()中定義②.每個實例特有③.只有它所屬的實例可以訪問、修改它④.在類內(nèi)部,用self.變量名訪問、修改它。在類外部,用實例名.變量名訪問、修改它①.在類中定義,不在方法中定義②.屬于類,類的所有實例所共有③.任何實例都可以訪問、修改它④.無論在類的內(nèi)部還是外部,建議用類名.變量名訪問、修改它實例變量和類變量的比較類方法1

@classmethod

2

defcreate(cls,*args):

3

iflen(args)==2:

4

returncls(args[0],args[1])

5

iflen(args)==1:

6result=re.findall('\d+',args[0])

7

iflen(result)==2:

8

returncls(int(result[0]),int(result[1]))

9

else:

10

print('坐標(biāo)格式錯誤')1112data4=Coordinate.create(3,4)#創(chuàng)建一個(3,4)坐標(biāo)實例

13

data5=Coordinate.create('4,5')#創(chuàng)建一個(4,5)坐標(biāo)實例

14

data6=Coordinate.create('5/6')

#創(chuàng)建一個(5,6)坐標(biāo)實例@classmethod是個裝飾器,表示下面是一個類方法。第一個參數(shù)cls指這個類。表示這個方法屬于這個類。可以擴(kuò)展__init__函數(shù)支持的參數(shù)。裝飾器一般用函數(shù)式編程得到,思路是一個函數(shù)的參數(shù)是另一個函數(shù),很少用到。靜態(tài)方法1importcsv

2importos

3

4classSomeOper:

5

@staticmethod

6

defread_file(filename):

7

ifos.path.exists(filename):

8content=[]

9file=open(filename,encoding=‘utf-8’)

10csv_reader=csv.reader(file)

11

forrowincsv_reader:

12[content.append(int(x))forxinrow]

13

returncontent

14SomeOper.read_file(‘test.csv’)#得到csv文件的list實例參數(shù)和類、實例都沒有關(guān)系。在普通函數(shù)前面有個類名,用類組織普通函數(shù)。一、數(shù)據(jù)類型當(dāng)任務(wù)很復(fù)雜時,可以拆分為幾個簡單的任務(wù),每個簡單任務(wù)對應(yīng)一個類,這時需要用多個類。分成了多個類,團(tuán)隊合作的時候,可以每個人負(fù)責(zé)一個類,最后把它們組合起來。在一個類中放入另一個類,構(gòu)成類的組合。有兩種常用的方法:①.構(gòu)造注入②.設(shè)值注入一、數(shù)據(jù)類型例3:有一個內(nèi)容是一些整數(shù)的csv文件,需要把文件中的所有數(shù)加起來。定義一個文件操作類FileOperator,用來讀csv文件。另一個管理類Manager,用來求和,把文件操作類放入管理類。(csv_sum.py)一、數(shù)據(jù)類型①.構(gòu)造注入,構(gòu)造時放入另一類的實例。1classManager:2def__init__(self,file_operator):

3

self.file_operator=file_operator1classFileOperator:…1fileOp=FileOperator()#創(chuàng)建一個FileOperator類的實例

2manager=Manager(fileOp)#創(chuàng)建一個Manager類的實例

3sum=pute('test.csv')#傳入csv文件名

4print(sum)#輸出計算結(jié)果一、數(shù)據(jù)類型②.設(shè)值注入,用setter函數(shù)放入另一類的實例。1classManager:

2

def__init__(self):

3

self.file_operator=None

4

5defset_file_operator(self,file_operator):

6

self.file_operator=file_operator1classFileOperator:…1fileOp=FileOperator()#創(chuàng)建一個FileOperator類的實例

2manager=Manager()#創(chuàng)建一個Manager類的實例

3manager.set_file_operator(fileOp)#通過setter函數(shù)注入實例

4sum=pute('test.csv')#傳入csv文件名

5print(sum)#輸出計算結(jié)果一、數(shù)據(jù)類型組合的好處1defcompute(self,filename):

1content=self.file_operator.read_csv(filename)

1sum_content=0

1

fornumincontent:

1sum_content+=num

1

returnsum_content1sum=pute('test.csv')#傳入csv文件名二、層次結(jié)構(gòu)例4:一些生命體的行為,貓、狗、學(xué)生和工人。(life.py)具體的行為和數(shù)據(jù)見下頁。LifeCatDogPersonStudentWorker更加抽象對于一個類,向上找,在樹的路徑上的統(tǒng)稱為父類,習(xí)慣上父類指上一層與它直接相連的那個類;向下找,在樹的路徑上的統(tǒng)稱為子類,習(xí)慣上子類指下一層與它直接相連的那個類。共同數(shù)據(jù):名字和年齡共同行為:說話特有行為:寫作業(yè)特有行為:上班特有數(shù)據(jù):性別二、層次結(jié)構(gòu)

二、層次結(jié)構(gòu)1classLife(object):

2

def__init__(self,name,age):

3

self.name=name

4

self.age=age

56

defspeak(self):

7

print("你好")89life=Life('li',20)

10life.speak()#輸出:你好生命類,包括名字和年齡兩個實例變量、一個說話方法。二、層次結(jié)構(gòu)1classCat(Life):

2

pass34cat1=Cat('c1',4)

5cat1.speak()輸出:你好1classDog(Life):

2

defspeak(self):

3

print("你好,我是一只狗")45dog1=Dog('d1',5)

6dog1.speak()輸出:你好,我是一只狗子類默認(rèn)繼承父類的方法和數(shù)據(jù)。子類實現(xiàn)父類的同名方法,而且參數(shù)相同(避免參數(shù)不同),稱為重寫(override)。通過這種方式定義子類的特有行為。二、層次結(jié)構(gòu)1classCat(Life):

2

pass34life=Cat('c1',4)

5life.speak()輸出:你好1classDog(Life):

2

defspeak(self):

3

print("你好,我是一只狗")45life=Dog('d1',5)

6life.speak()輸出:你好,我是一只狗life是屬于Life的子類實例。因為Life這個父類有speak()方法,那么子類也有speak()方法。由于子類重寫了父類的speak()方法,那么子類和父類的speak()方法行為不同。根據(jù)life屬于的子類類型,決定speak()方法的行為。二、層次結(jié)構(gòu)子類中的方法調(diào)用順序:實例調(diào)用一個方法時,先從自身所屬的類中找,如果找不到,從父類中找,如果還找不到,從父類的父類中找,依次找下去。執(zhí)行找到的第一個方法。如果一直到object仍然找不到這個方法,發(fā)生錯誤。重寫的好處:子類能夠根據(jù)需要實現(xiàn)父類的方法,只用根據(jù)父類的方法進(jìn)行設(shè)計。便于擴(kuò)展。1classPerson(Life):

2

def__init__(self,name,age,sex):

3

super().__init__(name,age)

4

self.sex=sex

5

6

defspeak(self):

7

print("你好,我是一個人")

8

9

defeat(self):

10

print("我在吃飯")1112person1=Person('p1',30,'man')

13person1.speak()

14person1.eat()15life=Life('li',20)16life.eat()

!發(fā)生錯誤子類有新的數(shù)據(jù)時,需要寫子類的構(gòu)造函數(shù),并顯式調(diào)用父類的構(gòu)造函數(shù)。這里super().__init__調(diào)用父類的構(gòu)造函數(shù),傳入父類需要的參數(shù)。當(dāng)子類有新的方法時,直接在子類定義這些方法。父類無法調(diào)用子類獨有的方法。二、層次結(jié)構(gòu)如果重寫方法后,需要調(diào)用父類的方法修改Person類中speak()方法的定義1defspeak(self,parent_method=False):

2

ifparent_method:

3

super().speak()

4

else:

5

print("你好,我是一個人")67person1=Person('p1',30,'man')8person1.speak()#輸出:你好,我是一個人9person1.speak(True)#輸出:你好子類重寫父類的方法后,可以用super()調(diào)用父類中的方法。二、層次結(jié)構(gòu)判斷實例屬于哪個類型1classPerson(Life):

2

…34person1=Person('p1',30,'man')

5

print(isinstance(person1,Person))#True

6

print(isinstance(person1,Life))#True

7

print(isinstance(person1,object))#True

8

print(isinstance(person1,Cat))#False

9

print(isinstance(person1,Dog))#False1011

print(isinstance(1,int))#Trueisinstance(o,t),判斷實例o是否屬于t類型三、設(shè)計模式設(shè)計代碼的準(zhǔn)則,①.每個類盡量只負(fù)責(zé)一個功能領(lǐng)域。②.擴(kuò)展功能時,盡量不修改原有代碼。③.實現(xiàn)功能時,針對父類的方法設(shè)計。三、設(shè)計模式設(shè)計模式有很多,給出兩種簡單的模式。一、外觀模式Facadepattern:當(dāng)我們有很多不同類的實例共同完成一個任務(wù)時,應(yīng)該新建一個外觀類,將不同實例交互的過程封裝起來,只給外界留下幾個基本的方法。二、模板模式Templatepattern。在父類中聲明方法,子類中實現(xiàn)方法。三、設(shè)計模式-外觀模式例5:假定已知訓(xùn)練數(shù)據(jù)train_data和待預(yù)測的數(shù)據(jù)predict_data,建立一個數(shù)據(jù)分析基本框架。(model.py)①數(shù)據(jù)預(yù)處理②分析方法③評估每個步驟設(shè)計一個類。輸入訓(xùn)練數(shù)據(jù)和預(yù)測數(shù)據(jù)輸出預(yù)測結(jié)果和模型效果①.數(shù)據(jù)預(yù)處理。1classPreProcess:

2

defstandardize(self,data):

3

pass

②.分析方法。1classAlgorithm:

2

deffit(self,train_data):

3

pass

4defpredict(self):

5

pass③.評估。1classEvaluate:

2

defevaluate(self,new_data,prediction):

3

pass1preProcess=PreProcess()#建立預(yù)處理類實例

2algorithm=Algorithm()#建立訓(xùn)練方法類實例

3evaluate=Evaluate()#建立評估類實例

4train_data=preProcess.standardize(train_data)#訓(xùn)練數(shù)據(jù)標(biāo)準(zhǔn)化

5predict_data=preProcess.standardize(predict_data)#預(yù)測數(shù)據(jù)標(biāo)準(zhǔn)化

6algorithm.fit(train_data)#擬合數(shù)據(jù)

7prediction=algorithm.predict(predict_data)#做預(yù)測

8evaluate.evaluate(predict_data,prediction)#預(yù)測效果評估三、設(shè)計模式-外觀模式建模①數(shù)據(jù)預(yù)處理②分析方法③評估輸入訓(xùn)練數(shù)據(jù)和預(yù)測數(shù)據(jù)輸出預(yù)測結(jié)果和模型效果輸入訓(xùn)練數(shù)據(jù)、預(yù)測數(shù)據(jù)、預(yù)處理方法、分析方法、評估方法輸出預(yù)測結(jié)果和模型效果④.建模類。1classModel:

2

def__init__(self,preProcess,algorithm,evaluate,train_data,predict_data):

3

self.preProcess=preProcess

4

self.algorithm=algorithm

5

self.evaluate=evaluate

6

self.train_data=train_data

7

self.predict_data=predict_data

8

9

defmodel(self):

10train_data=self.preProcess.standardize(self.train_data)#對訓(xùn)練數(shù)據(jù)預(yù)處理

11

predict_data=self.preProcess.standardize(self.predict_data)#對測試數(shù)據(jù)預(yù)處理

12

self.algorithm.fit(train_data)#用訓(xùn)練數(shù)據(jù)擬合模型

13

prediction=self.algorithm.predict(predict_data)#做預(yù)測

14

self.evaluate.evaluate(predict_data,prediction)#評估預(yù)測效果1preProcess=PreProcess()#建立預(yù)處理類實例

2algorithm=Algorithm()#建立訓(xùn)練方法類實例

3

evaluate=Evaluate()#建立評估類實例

4

model=Model(preProcess,algorithm,evaluate,train_data,predict_data)#建模類實例

5

model.model()#建模流程三、設(shè)計模式-模板模式二、模板模式,在父類中聲明方法,子類中實現(xiàn)方法。定義了一個結(jié)構(gòu)。例如,擴(kuò)展前面例子中的建模方法,增加線性回歸、lasso線性回歸。1classLinearRegression(Algorithm):

2

deffit(self,train_data):

3

#具體代碼

4

defpredict(self,predict_data):

5

#具體代碼1classLinearRegressionLasso(Algorithm):

2

def__init__(self,lambda_value):

3

self.lambda_value=lambda_value

4

deffit(self,train_data):

5

#具體代碼

6

defpredict(self,predict_data):

7

#具體代碼1classAlgorithm:

2

deffit(self,train_data):

3

pass

4defpredict(self,predict_data):

5

pass父類,fit只有聲明對于線性回歸和lasso線性回歸,只用更改第2句algorithm=LinearRegression()#建立線性回歸方法algorithm=LinearRegressionLasso(0.1)#建立Lasso線性回歸方法1preProcess=PreProcess()#建立預(yù)處理類

2algorithm=Algorithm()#建立訓(xùn)練類

3

evaluate=Evaluate()#建立評估類

4

model=Model(preProcess,algorithm,evaluate,train_data,predict_data)#建模類

5

model.model()#建模流程四、模塊如果代碼中多次使用同一操作,可將這個操作寫成模塊,使用時直接調(diào)用這個模塊,避免冗余代碼?;蛘?,每個類放在一個模塊中,避免代碼過長,看起來也更清晰。例如,代碼中多次要用到一個操作,第一個數(shù)加上第二個數(shù)。寫成模塊中的一個函數(shù)(或者用類)。(myalgo.py,use_myalgo.py)四、模塊①.新建一個myalgo.pymyalgo.py:1defss(a,b):

2

returna+b

3

4print(ss(1,1))輸出:2②.同級目錄下新建一個compute.pycompute.py:1fromexample_6_moduleimportmyalgo

2print(myalgo.ss(2,2))輸出:24在import導(dǎo)入模塊時,執(zhí)行了模塊文件中的print(ss(1,1))在python工程的根目錄新建了文件夾example_6_module來放代碼。四、模塊解決方案一:myalgo.py:1defss(a,b):

2

returna+b

解決方案二:myalgo.py:1defss(a,b):

2

returna+b

3

4if__name__=='__main__':

5

print(ss(1,1))如果直接執(zhí)行這個文件,會執(zhí)行print(ss(1,1))。如果import這個文件,不會執(zhí)行print(ss(1,1))。缺點:①.當(dāng)函數(shù)較復(fù)雜時,需要測試這個函數(shù)。②.需要這個文件本身也能夠執(zhí)行任務(wù)。四、模塊①.新建一個myalgo.pymyalgo.py:1defss(a,b):

2

returna+b

3

4if__name__=='__main__':

5

print(ss(1,1))直接執(zhí)行時,輸出:2②.同級目錄下新建一個compute.pycompute.py:1fromexample_6_moduleimportmyalgo

2print(myalgo.ss(2,2))輸出:4四、模塊myalgo.py:1defss(a,b):

2

returna+b*2

3

4if__name__=='__main__':

5

print(ss(1,1))這個__name__稱為文件模塊名。當(dāng)直接執(zhí)行源文件時,源文件處于主程序,那么__name__=

‘__main__’。否則,如果這個文件被當(dāng)作一個模塊導(dǎo)入,那么__name__為模塊的名字。四、模塊①.新建一個myalgo.pymyalgo.py:1defss(a,b):

2

returna+b

3

4if__name__=='__main__':

5

print(ss(1,1))6else:

7

print(__name_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論