《大數(shù)據(jù)分析:基于Python》 課件 第4章 函數(shù)和類_第1頁
《大數(shù)據(jù)分析:基于Python》 課件 第4章 函數(shù)和類_第2頁
《大數(shù)據(jù)分析:基于Python》 課件 第4章 函數(shù)和類_第3頁
《大數(shù)據(jù)分析:基于Python》 課件 第4章 函數(shù)和類_第4頁
《大數(shù)據(jù)分析:基于Python》 課件 第4章 函數(shù)和類_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

大數(shù)據(jù)分析:基于Python

第4章函數(shù)和類余本國

在Python中,函數(shù)和類都是重要的代碼結(jié)構(gòu),但它們在用途和功能上有所不同。函數(shù)是一段可以重復(fù)使用的代碼,用于執(zhí)行一個特定的任務(wù)。類則是一種更復(fù)雜的數(shù)據(jù)類型,它允許你創(chuàng)建自己的對象,并在這些對象上定義屬性和方法。

盡管函數(shù)和類在概念上有所不同,但它們在實際編程中經(jīng)常相互作用。類是一個用來包裝函數(shù)和數(shù)據(jù)的數(shù)據(jù)類型,類的方法可以是函數(shù)。同樣地,一個函數(shù)也可以調(diào)用一個類的方法。4.1自定義函數(shù)

函數(shù)是一個可以重復(fù)使用的代碼塊,它只在被調(diào)用時運(yùn)行。函數(shù)可以幫助我們組織和簡化代碼。Python內(nèi)置了許多函數(shù),比如print()、type()、len()等,但我們也可以創(chuàng)建自己的函數(shù),這就是自定義函數(shù)。4.1.1自定義函數(shù)格式自定義函數(shù)以def開始,后面跟上擬自定義的函數(shù)名稱,后面再帶上括號,括號內(nèi)是參數(shù),多個參數(shù)時用逗號分隔開,其下的代碼塊就是函數(shù)的主體(函數(shù)體),即要實現(xiàn)的功能,最后如果需要返回結(jié)果,則用return。具體格式如下:defname(x,y):#定義一個函數(shù)名為name,并有參數(shù)x,yblock(c)

#功能模塊,c為過程或結(jié)果變量returnc#函數(shù)運(yùn)行后返回的結(jié)果為c例如,編寫一個除法的函數(shù),代碼如下。In[1]:defdiv(x,y):...:c=x/y...:returnc

In[2]:div(1,2)Out[2]:0.5

上面的代碼首先定義了一個名為div的函數(shù),函數(shù)有兩個參數(shù)x和y,即在使用該函數(shù)時,需要接收兩個參數(shù)。在函數(shù)體內(nèi)將接收到的兩個參數(shù)x和y的值做除法,將結(jié)果保存在變量c中。最后將結(jié)果c返回,即在運(yùn)行div(x,y)后,div(x,y)的結(jié)果就等于c。如上接收參數(shù)x和y的值為1和2時,div(1,2)的結(jié)果就等于0.5。

在上面定義的自定函數(shù)中出現(xiàn)的參數(shù)x和y稱之為形式參數(shù),簡稱形參,而接收到的實際參數(shù)值為1和2稱為實際參數(shù),簡稱實參。在上述代碼中return返回的只是一個值,若有多個結(jié)果返回也可以,用逗號分隔開即可,或者把需要返回的多個變量寫成元組的形式。如需要將接收到的實參和結(jié)果都返回,可以寫成如下的形式:In[3]:defdiv(x,y):...:c=x/y...:returnx,y,c...:...:div(1,2)Out[3]:(1,2,0.5)這時候div()返回的就是一個元組,包含了接收到的變量的值以及其運(yùn)算的結(jié)果。所以返回什么結(jié)果,主要看return后的變量或表達(dá)式。當(dāng)然return不是必須的,若無返回的結(jié)果則可忽略。在上面自定義函數(shù)過程中,在賦值參數(shù)值(實參)的時候,是按照對應(yīng)位置賦值的,如div(1,2),則會自動將1賦給x,將2賦給y。

其實也可以按照給定的關(guān)鍵字賦值,如這里有兩個參數(shù)x和y,可以寫成div(x=1,y=2),或者div(y=2,x=1),這樣保證了函數(shù)體中的x=1和y=2。In[4]:add(2,1)Out[4]:(2,1,2)

In[5]:add(x=1,y=2)Out[5]:(1,2,0.5)

In[6]:add(y=2,x=1)Out[6]:(1,2,0.5)從上面的代碼中可以看出,In[4]是按照對應(yīng)位置賦值,其結(jié)果為2,并不是0.5。而In[5]和In[6]按照關(guān)鍵字賦值,則對結(jié)果沒有影響。在自定義函數(shù)時,也可以給函數(shù)寫個說明文檔,該文檔主要是給函數(shù)help()調(diào)用時使用的,比如,我們運(yùn)行help(len),會給我們返回關(guān)于len()函數(shù)的作用和用法。In[7]:help(len)Helponbuilt-infunctionleninmodulebuiltins:

len(obj,/)Returnthenumberofitemsinacontainer.其實自定義函數(shù)中的說明文檔就是help()函數(shù)調(diào)用時返回的內(nèi)容。說明文檔的內(nèi)容可以包括函數(shù)的開發(fā)作者、開發(fā)時間、函數(shù)的主要功能、函數(shù)的參數(shù)格式、返回的結(jié)果以及給出一個實例等,主要是告訴查詢該函數(shù)的讀者該函數(shù)相關(guān)的信息以及怎么使用。說明文檔寫在定義函數(shù)名稱下,用三引號引起來。下面我們給div()函數(shù)寫個說明文檔,具體如下。In[8]:defdiv(x,y):...:"""...:@ybg2023年9月25日...:該函數(shù)主要是計算輸入的兩個變量值得除法,...:注意:兩個變量是數(shù)值類型,其中的第二個參數(shù)y不能是0;...:返回的出發(fā)的結(jié)果。...:例如:...:>>>div(3,2)...:1.5...:"""...:c=x/y...:returnc

In[9]:div(6,4)Out[9]:1.5In[10]:help(div)Helponfunctiondivinmodule__main__:

div(x,y)@ybg2023年9月25日

該函數(shù)主要是計算輸入的兩個變量值得除法,

注意:兩個變量是數(shù)值類型,其中的第二個參數(shù)y不能是0;

返回的出發(fā)的結(jié)果。

例如:>>>div(3,2)1.5通過上面的help(div)可以看出,返回的信息恰好是自定義函數(shù)下的說明文檔。注意,在使用自定義函數(shù)時,必須先運(yùn)行,才能調(diào)用。4.1.2默認(rèn)參數(shù)在上面定義的div()函數(shù)中有兩個參數(shù)x和y,也就是說在使用div()函數(shù)時,必須輸入兩個參數(shù),否則就會報錯。假設(shè)我們只輸入一個參數(shù),希望此時給出的結(jié)果直接等于該輸入的參數(shù)值,也即將該輸入的參數(shù)值除以1。那這種情況該如何處理呢?其實這種情況相當(dāng)于給參數(shù)y設(shè)置成默認(rèn)參數(shù)1了,即當(dāng)賦值兩個參數(shù)值(x和y)時,y即為賦值的值,當(dāng)賦值一個參數(shù)值時,y為默認(rèn)的參數(shù)值1。對于設(shè)置默認(rèn)值參數(shù),可以直接在定義函數(shù)名時,將括號內(nèi)的形參賦值默認(rèn)值,形式如下:defname(x=1,y=1):pass上面在定義時就已經(jīng)給參數(shù)x和y都賦值了1,即使在使用該函數(shù)時不給形參x和y賦值,它會按照x和y都已經(jīng)賦值為1的情況執(zhí)行。In[1]:defdiv(x,y=1):...:"""...:@ybg2023年9月29日...:該函數(shù)主要是計算輸入的兩個變量值得除法,...:注意:兩個變量是數(shù)值類型,其中的第二個參數(shù)y不能是0;...:返回的出發(fā)的結(jié)果。...:y的默認(rèn)值為1....:例如:...:>>>div(3,2)...:1.5...:"""...:c=x/y...:returnc

In[2]:div(6)Out[2]:6.0

In[3]:div(6,4)Out[3]:1.5從代碼可以看出,當(dāng)只賦值一個值時直接將y值看作默認(rèn)值1執(zhí)行。當(dāng)賦值兩個參數(shù)值時,默認(rèn)值將會被覆蓋,以賦值的x和y值進(jìn)行運(yùn)算執(zhí)行。In[4]:deflistcount(lis=[]):...:"""...:統(tǒng)計列表中互異元素的出現(xiàn)的次數(shù),...:返回的是一個字典...:如:>>>a=[1,2,3,1,2,1,2,2,1,1]...:>>>listcount(a)...:返回值如下:...:{1:5,2:4,3:1}...:"""...:d={}...:#lis=[1,2,3,1,2,1,2,2,1,1]...:foriinset(lis):...:d[i]=lis.count(i)...:returnd

In[5]:listcount(lis=[])Out[5]:{}

In[6]:listcount(["a","b","a","c","b","a","c","d","a","b"])Out[6]:{'a':4,'b':3,'d':1,'c':2}4.2匿名函數(shù)lambda

在Python中,還有一種比自定義函數(shù)方便簡單的定義一個函數(shù)——匿名函數(shù)。lambda是一種用于創(chuàng)建匿名函數(shù)的關(guān)鍵字,匿名函數(shù)是一種沒有函數(shù)名的函數(shù),通常用于簡化代碼或在需要一個簡單函數(shù)的地方使用,其語法如下:lambdaarg:expression其中,arg是函數(shù)的參數(shù),可以是多個參數(shù),用逗號分隔。expression是函數(shù)的返回值表達(dá)式。下面是一個使用lambda函數(shù)的簡單示例。In[1]:add=lambdax,y:x+y...:result=add(3,2)...:print(result)8在上面的示例中,使用lambda函數(shù)創(chuàng)建了一個匿名函數(shù),賦值給了變量add,它接受兩個參數(shù)x和y,并返回它們的和。然后調(diào)用變量add,傳入?yún)?shù)3和2,得到結(jié)果5。lambda函數(shù)通常用于一些簡單的函數(shù)操作,可以在需要函數(shù)作為參數(shù)的地方使用,例如在map()函數(shù)中。它可以幫助簡化代碼,避免定義額外的命名函數(shù)。In[2]:#輸出("abc","23fdas",[1,2,3])中的每個元素的長度...:foriin("abc","23fdas",[1,2,3]):...:print((lambdax:len(x))(i))363由于它的表達(dá)式限制,lambda函數(shù)通常只適用于簡單的函數(shù)邏輯,復(fù)雜的函數(shù)操作仍然需要使用自定義函數(shù)def來實現(xiàn)。4.3常用函數(shù)Python作為一種流行的編程語言,有許多常用的函數(shù),除了前面學(xué)習(xí)過的print()、type()、len()、input()、list()、tuple()、set()、dict()、str()、int()、float()、sorted()、max()、min()等之外,還有一些常用的函數(shù),如:range()、enumerate()、zip()、map(),這些函數(shù)在數(shù)據(jù)處理過程中發(fā)揮著重要的作用。4.3.1range()range()函數(shù)用于創(chuàng)建一個整數(shù)序列,通常在循環(huán)中使用。它主要有三種用法:1)僅指定一個參數(shù)range(stop):生成從0開始到stop-1的整數(shù)序列。例如:range(5)會生成序列0,1,2,3,4。2)指定兩個參數(shù)range(start,stop):生成從start開始到stop-1的整數(shù)序列。例如:range(2,7)會生成序列2,3,4,5,6。3)指定三個參數(shù)range(start,stop,step):生成從start開始到stop-1的整數(shù)序列,步長為step。例如:range(1,10,2)會生成序列1,3,5,7,9。range()函數(shù)的參數(shù)start、stop、step(稱為3s)格式類似于字符串和列表的切片,只是切片用的是冒號分隔,range()函數(shù)用的是逗號分隔,范圍也是“左閉右開”,即最后的stop取不到。range()函數(shù)返回的是一個可迭代對象(iterable),而不是直接生成一個列表,可以理解為一個容器,range()函數(shù)所產(chǎn)生的元素全部放在這個容器內(nèi),當(dāng)你需要這些元素組成列表時,就用list()來調(diào)用,如果希望組成元組就用tuple()來調(diào)用,如list(range(5)),tuple(range(5))。但可以通過迭代來遍歷容器中的每個元素,如for循環(huán)。In[7]:#生成一個1到10的列表...:lis=list(range(1,11))...:lisOut[7]:[1,2,3,4,5,6,7,8,9,10]In[8]:foriinrange(0,10,2):#打印range(0,10,2)中的元素...:print(i,end="/")0/2/4/6/8/4.3.2enumerate()enumerate()函數(shù)用于在迭代過程中同時獲取元素索引和對應(yīng)的值,常用于循環(huán)中需要同時使用索引號和對應(yīng)元素值的情況。它返回的是一個可迭代對象,其中每個元素是一個索引號與對應(yīng)值的二維元組。In[1]:fruits=['apple','banana','orange','peach’]...:#使用enumerate()遍歷打印其中的元素...:foriinenumerate(fruits):...:print(i)(0,'apple')(1,'banana')(2,'orange')(3,'peach')從上述代碼中看出enumerate()函數(shù)產(chǎn)生的元素是索引號與對應(yīng)值的二維元組。In[2]:#使用enumerate()遍歷打印水果列表,并輸出索引和值...:forindex,fruitinenumerate(fruits):...:print(f"{fruit}的索引號為:{index}")apple的索引號為:0banana的索引號為:1orange的索引號為:2peach的索引號為:3在for循環(huán)中,我們使用元組解包的方式將索引和值分別賦值給index和fruit。然后,我們打印輸出對應(yīng)的水果名稱及其索引。通過使用enumerate()函數(shù),我們可以方便地獲取索引和對應(yīng)值,并靈活地在循環(huán)中使用它們。下面的例子使用enumerate()函數(shù)給出了輸出列表中互異元素出現(xiàn)的次數(shù)以及其所在的位置(即索引號)。In[3]:lis=["a","b","a","c","b","a"]...:...:forkinset(lis):...:p=1...:fori,jinenumerate(lis):...:ifj==k:...:print("%s第%d次出現(xiàn),其索引號為%d"%(j,p,i))...:p+=1a第1次出現(xiàn),其索引號為0a第2次出現(xiàn),其索引號為2a第3次出現(xiàn),其索引號為5b第1次出現(xiàn),其索引號為1b第2次出現(xiàn),其索引號為4c第1次出現(xiàn),其索引號為34.3.3zip()在Python中,zip()函數(shù)用于將多個可迭代對象(例如列表、元組等)中對應(yīng)位置的元素打包成一個個元組,并返回一個由這些元組組成的迭代器。zip()函數(shù)可以接受任意數(shù)量的參數(shù),但最終返回的迭代器的長度取決于參數(shù)中最短的可迭代對象的長度。zip()函數(shù)的基本語法如下:zip(a,b,...)下面是一個簡單的示例,展示了如何使用zip()函數(shù)。In[1]:lis1=[1,2,3]...:lis2=['a','b','c']...:...:zipped=zip(lis1,lis2)...:list(zipped)Out[1]:[(1,'a'),(2,'b'),(3,'c')]In[2]:lis3=[1,2,3,4]...:foriinzip(lis3,lis2):#兩個序列不等長...:print(i)(1,'a')(2,'b')(3,'c')需要注意的是,如果傳入的可迭代對象長度不一致,zip()函數(shù)將會以最短的可迭代對象為準(zhǔn),忽略超出部分的元素。In[3]:tup1=tuple(zip(lis1,lis2))...:tup1Out[3]:((1,'a'),(2,'b'),(3,'c'))上面將lis1、lis2合成了一個二元的元組tup1,如何將上述中的tup1再分解為lis1和lis2呢?這個過程稱為解包,解包格式為:zip(*tup1)如解包tup1。In[4]:tup1=tuple(zip(lis1,lis2))...:tup1Out[4]:((1,'a'),(2,'b'),(3,'c'))

In[5]:lis_zip=list(zip(*tup1))

In[6]:lis1_=lis_zip[0]...:lis2_=lis_zip[1]

In[7]:print(lis1_,lis2_)(1,2,3)('a','b','c')4.3.4map()map()函數(shù)有兩個參數(shù),一個功能函數(shù)和一個序列,其作用是將功能函數(shù)作用在序列中的每個元素上,返回的是一個迭代器(容器)。In[1]:tup=("abc","23fdas",[1,2,3])...:list(map(len,tup))#返回tup元組中每個元素的長度Out[1]:[3,6,3]

In[2]:tuple(map(type,tup))#返回tup元組中每個元素的數(shù)據(jù)類型

Out[2]:(str,str,list)注意,功能函數(shù)不要帶其后的括號()。再如,將lis列表中的每個字母大寫。In[3]:list(map(lambdax:x.upper(),lis))Out[3]:['A','B','A','C','B','A']此處寫了個臨時函數(shù)lambdax:x.upper(),功能是將字符串中的每個字母大寫。4.4類類(Class)是一種抽象數(shù)據(jù)類型,它允許創(chuàng)建具有特定屬性和行為的對象。類是面向?qū)ο缶幊蹋∣OP)的基礎(chǔ),將數(shù)據(jù)和操作封裝在一起,以創(chuàng)建可重用的代碼。如果說自定義函數(shù)就像是一份制作餡餅的配方,可以根據(jù)需要調(diào)用不同的函數(shù)來制作不同口味的餡餅。而類則更像是一個餡餅?zāi)>?,可以根?jù)這個模具制作多個具有相同結(jié)構(gòu)和特征的餡餅實例。函數(shù)是一份配方,類是一個模具。類使用關(guān)鍵字class創(chuàng)建,定義一個類的基本語法如下:classClassName():#類的屬性和方法passClassName是類的名稱,按照命名規(guī)范應(yīng)該使用駝峰命名法(首字母大寫,后續(xù)單詞首字母大寫),其后的括號內(nèi)若無參數(shù)可以省略。類的屬性和方法定義在類的內(nèi)部,可以包括數(shù)據(jù)屬性和函數(shù)(稱為方法)。In[1]:classCar:...:def__init__(self,color,brand):...:self.color=color...:self.brand=brand...:...:defdisplay(self):...:return"Thisisa{}{}".format(self.color,self.brand)在這個例子中,Car是一個類。__init__是一個特殊的方法(也稱為類的構(gòu)造函數(shù)),在創(chuàng)建類的新實例時被調(diào)用,主要作用是接收參數(shù),在這個例子中是接收顏色和品牌參數(shù)。然后,定義了一個名為display()的方法,它返回一個字符串,包含汽車的顏色和品牌。在Python中,函數(shù)和類是具有以下區(qū)別:1.定義方式:函數(shù)使用def關(guān)鍵字定義,而類使用class關(guān)鍵字定義。2.功能和用途:函數(shù)是一段可重復(fù)使用的代碼塊,用于執(zhí)行特定的操作或完成特定的任務(wù)。類是一種對象的抽象模板,用于創(chuàng)建具有相似屬性和行為的對象。類定義了對象的屬性和方法,可以用于創(chuàng)建多個對象實例。3.調(diào)用方式:函數(shù)通過函數(shù)名加括號的方式調(diào)用,例如function_name(),而類通過實例化創(chuàng)建對象,并通過對象調(diào)用類的方法,例如object_name.method_name()。4.數(shù)據(jù)封裝:函數(shù)通常不包含狀態(tài)信息,它們接受參數(shù)并返回結(jié)果,但不維護(hù)任何狀態(tài)。類可以包含屬性,用于維護(hù)對象的狀態(tài)和數(shù)據(jù)。類的屬性可以在類的方法中訪問和修改。5.繼承和多態(tài):類支持繼承和多態(tài)的概念,可以通過繼承創(chuàng)建子類,子類可以繼承和擴(kuò)展父類的屬性和方法。多態(tài)允許不同的類實現(xiàn)相同的方法名,但具有不同的行為。函數(shù)沒有繼承和多態(tài)的概念??偟膩碚f,函數(shù)和類在功能和用途上有所區(qū)別。函數(shù)用于封裝可重復(fù)使用的代碼塊,而類用于創(chuàng)建具有相似屬性和行為的對象。函數(shù)通常用于處理一些獨立的操作,而類用于實現(xiàn)更復(fù)雜的數(shù)據(jù)封裝和面向?qū)ο缶幊痰乃枷搿?.4.2類的創(chuàng)建

在類中,屬性是類的特征,它們用于存儲對象的狀態(tài)。屬性可以是任何數(shù)據(jù)類型,例如整數(shù)、字符串、列表等。在類中,屬性通常定義為類的變量,并在類的方法(類內(nèi)函數(shù))中使用。

下面是一個簡單的示例,展示了一個名為Person的類,它具有屬性和方法。In[2]:classPerson:...:def__init__(self,name,age):...:=name...:self.age=age...:defsay_hello(self):#必須帶有self參數(shù)...:print("Hello,mynameis",)...:defget_age(self):...:"""返回虛歲"""...:ag=self.age+1...:returnag在上面的示例中,Person類具有兩個屬性:name和age。它還有兩個方法:say_hello()和get_age()。通過創(chuàng)建Person對象,我們可以訪問對象的屬性和調(diào)用對象的方法。代碼行“def__init__(self,name,age)”用于接收參數(shù)name和age的值,也稱為變量初始化。在類內(nèi)的自定義函數(shù)中,都必須有參數(shù)self,用于接收來自外部的參數(shù)值name和age,并保存在類的內(nèi)部,比如接收name的值為“張三”,可以寫為="張三",即把外部的值“張三”賦給了內(nèi)部的。當(dāng)然,此處的也可以命名為別的,如self.xm或者self.x,也就是說self后可以隨意命名,但是不建議這樣做,為了代碼的可讀性,建議將形參直接作為內(nèi)部變量名,即使用。所以同理self.age=age表示接收外部的age值到內(nèi)部的self.age。In[3]:#創(chuàng)建一個Person對象...:person1=Person("Alice",25)如上,實例化一個person1對象,賦值參數(shù)值為Alice和25。In[4]:#訪問對象的屬性...:#訪問類的屬性O(shè)ut[4]:'Alice'類內(nèi)的變量即屬性,屬性可以直接訪問,如。當(dāng)類內(nèi)的屬性不想被類外訪問時,可以給變量命名時前面加雙下劃線(__),表明該變量為私有屬性,僅類內(nèi)調(diào)用。In[5]:#調(diào)用對象的方法...:person1.say_hello()#輸出:Hello,mynameisAliceHello,mynameisAlice

In[6]:#調(diào)用對象的方法并獲取返回值...:person1.get_age()Out[6]:26類的方法即類內(nèi)自定義函數(shù)。調(diào)用方法為直接在類的對象后加點帶方法,如person1.say_hello()。4.5函數(shù)和類的調(diào)用當(dāng)寫好一個函數(shù)和類之后,在其它文件代碼中該如何調(diào)用呢?首先我們將函數(shù)和類保存成.py文件,放在默認(rèn)的環(huán)境下,或放在當(dāng)前代碼文件夾下,便于當(dāng)前代碼的調(diào)用,具體的調(diào)用方法如下文。在同一個文件夾下調(diào)用。比如有一個加法add()函數(shù),保存命名為A.py。內(nèi)容如下:#A.py文件defadd(x,y):print('和為:%d'%(x+y))

下面要在另一個代碼文件B.py中調(diào)用A.py中的加法add()函數(shù)。在調(diào)用時,我們需要把A.py文件導(dǎo)入,導(dǎo)入時使用import命令。B文件內(nèi)容具體如下:#B.py文件:importAA.add(1,2)In[1]:importA...:A.add(2,3)Out[1]:和為:5我們使用A.py文件中的add()函數(shù)(方法),調(diào)用方法為A.add()。為了調(diào)用方便,減少輸入的麻煩,我們在調(diào)用時使用from指明具體的調(diào)用函數(shù)的名稱,這樣就免去了每次調(diào)用時需要添寫“A.”前綴,方法如下。fromAimportaddadd(1,2)In[2]:fromAimportadd...:add(2,3)Out[2]:和為:5類的調(diào)用跟函數(shù)的調(diào)用方法一致。函數(shù)和類的調(diào)用方法都是在同一個文件下的調(diào)用,對于不同文件下的調(diào)用時,需要進(jìn)行說明,即需要有個“導(dǎo)引”,假如Cl_A.py文件的文件路徑為:C:\Users\bg\Documents,現(xiàn)有D:\yubg下的B.py文件需要調(diào)用Cl_A.py文件中類Ax的add()方法,調(diào)用方法如下:importsyssys.path.append(r'C:\Users\bg\Documents')

importCl_Aa=Cl_A.Ax(2,3)a.add()4.6包和模塊下面,我們先來看一個例子:In[1]:a=[1.23e+18,1,-1.23e+18]

In[2]:sum(a)Out[2]:0.0怎么會是0?再執(zhí)行下面的代碼:In[3]:importmath...:math.fsum(a)Out[3]:1.0計算機(jī)由于浮點數(shù)的運(yùn)算問題,會導(dǎo)致上面代碼的運(yùn)算結(jié)果存在系統(tǒng)差異。但是,我們引入一個math模塊后,計算結(jié)果就正常了。4.6.1模塊的導(dǎo)入模塊(module)是包含函數(shù)和其他語句的Python腳本文件,它以“.py”為后綴名,即Python腳本的后綴名。表現(xiàn)形式為編寫的代碼保存為文件,這個文件就是一個模塊,如yu.py文件,其中文件名yu為模塊名稱。在Python中可以通過導(dǎo)入模塊,然后使用其模塊中提供的函數(shù)或者變量。模塊的導(dǎo)入方法如下,以math模塊為例:(1)importmath#導(dǎo)入math模塊(2)importmathasm#導(dǎo)入math模塊并取個別名為m(3)frommathimportexpase#導(dǎo)入math庫中exp函數(shù)并取別名為e使用“import模塊名”模式導(dǎo)入模塊中的函數(shù),則必須以“模塊名.函數(shù)名”的形式調(diào)用函數(shù),或者使用“import模塊名as別名”模式以“別名.函數(shù)名”的形式調(diào)用函數(shù);而from是將模塊中某個函數(shù)導(dǎo)入,所以使用from導(dǎo)入的模塊中某個函數(shù),可以直接使用函數(shù)名調(diào)用,不必在前面加上模塊名稱。如上例引入math模塊可以使用如下方式調(diào)用:In[4]:importmathasm #給math模塊取個別名m,使用時用m替代math...:a=[1.23e+18,1,-1.23e+18]...:m.fsum(a)Out[4]:1.0

In[5]:frommathimportfsum #這里直接導(dǎo)入了math模塊中的fsum函數(shù)...:a=[1.23e+18,1,-1.23e+18]...:fsum(a) #直接使用fsum(),不再使用math.fsum()Out[5]:1.0使用from導(dǎo)入模塊中的函數(shù)后,再使用模塊中的函數(shù)會方便很多,不用每次再輸入模塊名。如果要想將多個模塊中的所有函數(shù)都采用這種方式導(dǎo)入,則可以在from中使用“*”通配符,表示導(dǎo)入模塊中的所有函數(shù),但不建議這樣使用,避免內(nèi)置函數(shù)和模塊中的函數(shù)重名而引起錯誤。模塊就是一個

溫馨提示

  • 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

提交評論