版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章函數(shù)內(nèi)置函數(shù)函數(shù)式編程函數(shù)的定義與調(diào)用函數(shù)的參數(shù)傳遞3.13.23.33.4遞歸函數(shù)與遞歸算法函數(shù)文檔測(cè)試函數(shù)注釋模塊化程序設(shè)計(jì)3.53.63.73.8學(xué)習(xí)引導(dǎo)…了解…理解…掌握…運(yùn)用3.1內(nèi)置函數(shù)3.1內(nèi)置函數(shù)Python解釋器提供的一組已經(jīng)實(shí)現(xiàn)好的函數(shù)可以直接在代碼中使用,無須額外導(dǎo)入或安裝提供基本操作和功能簡化編程任務(wù)增強(qiáng)代碼可讀性提高代碼性能促進(jìn)代碼重用3.1內(nèi)置函數(shù)入門函數(shù)input()print()help()id()type()
數(shù)學(xué)函數(shù)sum()abs()max()min()pow()divmod()round()數(shù)值類型函數(shù)int()bin()oct()hex()bool()float()complex()數(shù)據(jù)類型函數(shù)range()tuple()list()set()frozenset()dict()str()序列函數(shù)len()sorted()all()any()
迭代器函數(shù)zip()map()iter()filter()enumerate()reversed()
對(duì)象操作函數(shù)format()eval()open()chr()ord()dir()
常用內(nèi)置函數(shù):3.2函數(shù)式編程3.2函數(shù)式編程命令式編程主流編程范式函數(shù)式編程開發(fā)階段可變變量函數(shù)設(shè)計(jì)變量修改執(zhí)行階段函數(shù)求值函數(shù)組合并行執(zhí)行順序執(zhí)行狀態(tài)演進(jìn)不可變對(duì)象流程控制函數(shù)式編程
#命令式編程 ls=
['0','1','2','3','4']
foriinrange(5): ls[i]
=
int(ls[i])
print(ls)
#[0,1,2,3,4]3.2
#函數(shù)式編程
print(list(map(int,['0','1','2','3','4'])))
#[0,1,2,3,4]將列表中的元素轉(zhuǎn)換為整數(shù)的操作,命令式編程與函數(shù)式編程如下:3.3函數(shù)的定義與調(diào)用3.3函數(shù)的定義與調(diào)用——函數(shù)定義函數(shù):用于進(jìn)行某種計(jì)算或具有某種功能的有名稱的一系列語句的組合。函數(shù)定義格式:def
函數(shù)名(參數(shù)):
"""文檔注釋"""
函數(shù)體語句
return
返回值函數(shù)的定義與調(diào)用——函數(shù)定義3.3def
函數(shù)名(參數(shù)):
"""文檔注釋"""
函數(shù)體語句
return
返回值函數(shù)頭:def…:
首行以def關(guān)鍵字起始,英文冒號(hào)結(jié)束函數(shù)名符合規(guī)范的名字符合命名規(guī)則,字母、下劃線和數(shù)字組成應(yīng)具有一定含義read_file()、get_data()能簡單說明函數(shù)的功能參數(shù)(形式參數(shù))可傳入0個(gè)或多個(gè)參數(shù)def
函數(shù)名(參數(shù)):
"""文檔注釋"""
函數(shù)體語句
return
返回值函數(shù)的定義與調(diào)用——函數(shù)定義3.3函數(shù)體:相當(dāng)于
def縮進(jìn)一檔文檔注釋函數(shù)功能注釋三對(duì)雙引號(hào)引起來包括該函數(shù)的功能、可接受參數(shù)的個(gè)數(shù)和數(shù)據(jù)類型、返回值的個(gè)數(shù)和類型等函數(shù)體語句實(shí)現(xiàn)函數(shù)功能的一條或多條程序語句def
函數(shù)名(參數(shù)):
"""文檔注釋"""
函數(shù)體語句
return
返回值函數(shù)的定義與調(diào)用——函數(shù)定義3.3return返回值關(guān)鍵字。return是函數(shù)在調(diào)用過程中執(zhí)行的最后一個(gè)語句。每個(gè)函數(shù)可以有多個(gè)return語句,但在執(zhí)行過程中,只能有一個(gè)被執(zhí)行到return語句不存在時(shí),此時(shí)函數(shù)的返回值為None返回值將函數(shù)的處理結(jié)果返回給調(diào)用處返回值沒有類型限制,也沒有個(gè)數(shù)限制返回值為多個(gè)時(shí),以元組形式返回3.3函數(shù)的定義與調(diào)用——函數(shù)調(diào)用
def
add_numbers(a,b): """這個(gè)函數(shù)接受兩個(gè)數(shù)字參數(shù),計(jì)算并返回它們的和。""" result=a+b
returnresult #主程序,不縮進(jìn),對(duì)def對(duì)齊 sum_result=
add_numbers(3,5)
print(sum_result)
#輸出8Python遵循先定義后使用的規(guī)則程序中定義的函數(shù)只有在被調(diào)用時(shí)才運(yùn)行。定義好的函數(shù)可以通過名字調(diào)用。3.3函數(shù)的定義與調(diào)用——函數(shù)調(diào)用函數(shù)被調(diào)用時(shí),要傳入與函數(shù)定義里相同數(shù)量的參數(shù)傳入的參數(shù)稱為實(shí)際參數(shù),必須具有確定的值。這些值會(huì)被傳遞給函數(shù)定義中的形式參數(shù),相當(dāng)于一個(gè)賦值的過程。
def
f(x,y): """接收2個(gè)參數(shù)x和y,返回其整數(shù)商和模""" a=x//y #計(jì)算x除以y的商 b=x%y #計(jì)算x對(duì)y取模的結(jié)果
returna,b num1,num2=f(13,3)
print(num1,num2)#輸出計(jì)算結(jié)果:4,1
print(f(13,3))
#可將函數(shù)作為print函數(shù)的參數(shù),直接輸出函數(shù)的返回值3.3函數(shù)的定義與調(diào)用——函數(shù)調(diào)用return語句可以同時(shí)返回多個(gè)值以元組形式同時(shí)返回多個(gè)值,表示元組的括號(hào)可以省略
def
f(x,y): """接收2個(gè)參數(shù)x和y,返回其整數(shù)商和模""" a=x//y b=x%y
return
a,b#以元組類型(a,b)將整商和模返回給調(diào)用處
num1,num2=f(13,3)
#將返回值(4,1)中的元素按順序賦值
print(num1,num2)
print(f(13,3))#輸出5+3=83.1計(jì)算并輸出球的表面積和體積
3.1計(jì)算并輸出球的表面積和體積
importmath
defsphere_properties
(r):
"""
接收球的半徑,計(jì)算并返回球的表面積和體積
參數(shù):r--球的半徑;返回值:返回輸出球的表面積和體積
"""
surface_area=4*math.pi*r**2#計(jì)算球的表面積
volume=4/3*math.pi*r**3#計(jì)算球的體積
returnsurface_area,volume#返回2個(gè)計(jì)算結(jié)果
r=float(input())#輸入球的半徑和圓周率,例如5.6
#調(diào)用函數(shù)計(jì)算球的表面積和體積,函數(shù)返回值同步賦值給變量s和v
s,v=sphere_properties
(r)#調(diào)用函數(shù),返回2個(gè)計(jì)算結(jié)果
print(f"球的表面積為:{s:.2f}")#球的表面積為:394.08
print(f"球的體積為:{v:.2f}")#球的體積為:735.29實(shí)例函數(shù)需要參數(shù)調(diào)用時(shí)傳遞參數(shù)函數(shù)有多個(gè)返回值以元組形式返回,括號(hào)可以省略3.4
函數(shù)的參數(shù)傳遞3.4參數(shù)傳遞當(dāng)函數(shù)的定義中存在多個(gè)參數(shù)時(shí),其參數(shù)傳遞形式主要有以下五種:3.4.1位置傳遞位置固定,參數(shù)傳遞時(shí)按照形式參數(shù)定義的順序提供實(shí)際參數(shù)。優(yōu)點(diǎn):使用方便缺點(diǎn):當(dāng)參數(shù)數(shù)目較多時(shí),函數(shù)調(diào)用容易混淆。
def
fun(name,city,hobby): """接收用戶名、城市和愛好,返回一個(gè)字符串"""
return'我的名字是{name},來自{city},愛好是{hobby}。' user_name,user_city,user_hobby=input().split()
#輸入:夏琪武漢羽毛球
print(fun(user_name,user_city,user_hobby)) #我的名字是夏琪,來自武漢,愛好是羽毛球。 #調(diào)用時(shí)user_name,user_city,user_hobby的值順序傳遞給name,city,hobby3.4.2關(guān)鍵字傳遞提供實(shí)際參數(shù)對(duì)應(yīng)的形式參數(shù)名稱,根據(jù)每個(gè)參數(shù)的名稱傳遞參數(shù),關(guān)鍵字并不需要遵守位置的對(duì)應(yīng)關(guān)系。優(yōu)點(diǎn):明確實(shí)際參數(shù)和形式參數(shù)的對(duì)應(yīng)關(guān)系,參數(shù)書寫順序更靈活缺點(diǎn):增加了函數(shù)調(diào)用時(shí)的代碼書寫量
def
fun(name,city,hobby): """接收用戶名、城市和愛好,返回一個(gè)字符串"""
return'我的名字是{name},來自{city},愛好是{hobby}。' user_name,user_city,user_hobby=input().split()
#切分字符串,分別賦值
print(fun(hobby=user_hobby,city=user_city,name=user_name)) #關(guān)鍵字傳遞時(shí)順序無關(guān)
3.4.2關(guān)鍵字傳遞——混合使用關(guān)鍵字傳遞和位置傳遞混用時(shí),按位置傳遞的參數(shù)要出現(xiàn)在按關(guān)鍵字傳遞的參數(shù)前面。否則,編譯器無法明確知道除關(guān)鍵字以外的參數(shù)出現(xiàn)的順序。
def
fun(name,city,hobby): """接收用戶名、城市和愛好,返回一個(gè)字符串"""
return'我的名字是{name},來自{city},愛好是{hobby}。' user_name,user_city,user_hobby=input().split()
#切分字符串,分別賦值
print(fun(user_name,city=user_city,hobby=user_hobby))
#位置參數(shù)要在關(guān)鍵字參數(shù)前3.4.2關(guān)鍵字傳遞——強(qiáng)制參數(shù)類型Python3.8之后的文檔中斜杠/:其前的參數(shù)必須使用位置參數(shù)的形式星號(hào)*:其后的參數(shù)必須為關(guān)鍵字參數(shù)的形式divmod(x,y,/)
#斜杠前面只能是位置參數(shù)sum(iterable,/,start=0)
#斜杠前面是位置參數(shù),不限制后面參數(shù)形式max(iterable,*[,key,default])
#星號(hào)后參數(shù)必須為關(guān)鍵字參數(shù)的形式sorted(iterable,/,*,key=None,reverse=False)
#斜杠前為位置參數(shù),星號(hào)后為關(guān)鍵字參數(shù)3.4.3默認(rèn)值傳遞在定義函數(shù)的時(shí)候,可以使用形如city='武漢'的方式給參數(shù)賦予默認(rèn)值。默認(rèn)值參數(shù)必須放在必選參數(shù)之后。在調(diào)用函數(shù)時(shí),如果該參數(shù)得到傳入值,按傳入值進(jìn)行計(jì)算,否則使用默認(rèn)值。優(yōu)點(diǎn):可以降低調(diào)用函數(shù)的難度。def
fun(name,city='武漢',hobby=
'唱歌'):#默認(rèn)值參數(shù)必須放在后面,且可以有多個(gè)
return'我的名字是{name},來自{city},愛好是{hobby}。'def
fun(name='夏琪',city,hobby='唱歌'):#位置參數(shù)應(yīng)排在前面return'我的名字是{name},來自{city},愛好是{hobby}?!?“SyntaxError:non-defaultargumentfollowsdefaultargument”3.4.3默認(rèn)值傳遞默認(rèn)參數(shù)可指向不可變對(duì)象,如整型(int)、字符串(string)、浮點(diǎn)型(float)、元組(tuple)等。不能指向可變對(duì)象,如字典(dict)和列表(list)等,否則在重復(fù)調(diào)用時(shí),可能不會(huì)創(chuàng)建新對(duì)象,而是對(duì)同一個(gè)對(duì)象進(jìn)行操作。def
fun(name,city,hobby=
'唱歌'):#hobby使用默認(rèn)值
return'我的名字是{name},來自{city},愛好是{hobby}。'user_name,user_city=
input().split()
#只輸入姓名與城市2個(gè)值,輸入夏琪武漢print(fun(user_name,city=user_city))
#默認(rèn)值參數(shù)可以不傳值#輸出:我的名字是夏琪,來自武漢,愛好是唱歌。3.4.4包裹傳遞包裹傳遞也稱為不定參數(shù)傳遞,用于在定義函數(shù)時(shí)不能確定函數(shù)調(diào)用時(shí)會(huì)傳遞多少個(gè)參數(shù)時(shí)使用。用*args
將多個(gè)位置參數(shù)打包成一個(gè)元組用**kwargs
將多個(gè)關(guān)鍵字參數(shù)打包成一個(gè)字典。函數(shù)每次調(diào)用時(shí),傳遞的參數(shù)數(shù)量可以不同。3.4.4包裹傳遞#當(dāng)傳入?yún)?shù)是位置傳遞時(shí),所有傳入?yún)?shù)被合并成一個(gè)元組,再傳遞給函數(shù)。def
add(*number):
"""接收不確定數(shù)量位置傳遞的參數(shù),合并為一個(gè)元組number在函數(shù)體內(nèi)使用"""
print(number)
#輸出傳入的對(duì)象,查看參數(shù)類型,元組,形如(1,3,5,7,9)
result
=
0
#定義一個(gè)變量,用于存儲(chǔ)求和結(jié)果
for
i
in
number:
#遍歷元組中的每個(gè)元素
if
type(i)
in
(int,float):
#對(duì)參數(shù)進(jìn)行了類型檢查(數(shù)值型的才能求和)
result
=
result
+
i
#求和
return
result
#返回求和結(jié)果
print(add(1,3,5,7,9))
#輸出25print(add(1,2,3,4,5,6,7,8,9,10))
#輸出55print(add(1,2,
'hello',3.45,6))
#輸出12.453.4.4包裹傳遞#當(dāng)傳入?yún)?shù)是關(guān)鍵字傳遞時(shí),傳入?yún)?shù)合并成一個(gè)字典#以參數(shù)名作為字典的鍵,參數(shù)值作為字典的值再傳遞給函數(shù)def
add(**number):"""接收不確定數(shù)量的關(guān)鍵字參數(shù),合并為字典number在函數(shù)體內(nèi)使用"""
print(number)
#輸出字典,形如{'a':1,'b':3,'c':5}return
sum(number.values())
#對(duì)字典的值求和,返回結(jié)果
#以下為主程序,調(diào)用函數(shù)add傳入不同參數(shù),觀察輸出結(jié)果print(add(a=1,b=3,c=5))
#輸出9print(add(m=1,n=2,o=3,p=4,q=5,i=6,j=7,k=8))
#輸出363.4.5解包裹傳遞解包裹傳遞:通過“*”或“**”操作符將一個(gè)可迭代對(duì)象(如列表、元組)或字典的內(nèi)容展開,并傳遞給函數(shù)。解包可以有效地將組合數(shù)據(jù)中的元素映射到函數(shù)的參數(shù)中。def
add(a,b,c):"""接收三個(gè)位置傳遞參數(shù),返回其加和"""return
a
+
b
+
c
#對(duì)字典的值求和,返回結(jié)果
#以下為主程序,調(diào)用函數(shù),傳遞參數(shù)num1
=
(1,3,5)#位置傳遞參數(shù)print(add(*num1))
#調(diào)用函數(shù),傳遞參數(shù),輸出結(jié)果9num2
=
{'a':
1,'b':
2,'c':
3}#關(guān)鍵字傳遞參數(shù)print(add(**num2))
#調(diào)用函數(shù),傳遞參數(shù),輸出結(jié)果63.5遞歸函數(shù)與遞歸算法3.5遞歸——遞歸函數(shù)遞歸函數(shù):在內(nèi)部調(diào)用函數(shù)本身。遞歸算法是將原問題不斷分解為規(guī)??s小的子問題,然后遞歸調(diào)用方法來表示問題的解。優(yōu)點(diǎn):定義簡單,邏輯清晰。缺點(diǎn):效率不高,而且需要注意防止棧溢出。一般默認(rèn)遞歸深度在1000左右,如果遞歸太深,可能觸發(fā)異常。3.5遞歸——遞歸算法特性1.必須有一個(gè)明確的遞歸終止條件,使遞歸在有限次調(diào)用后要進(jìn)行回溯才能得到最終的結(jié)果。2.在遞歸的臨界點(diǎn)應(yīng)該直接給出問題的解決方案。3.每次進(jìn)入更深一層遞歸時(shí),問題規(guī)模相比上次遞歸都應(yīng)有所減少或更接近于解。def
fact(n):"""接收一個(gè)正整數(shù)為參數(shù),用遞歸方法計(jì)算其階乘值并返回,返回值為整型。"""
if
n
==
1:
#當(dāng)n=1時(shí)
return
1#返回1,終止函數(shù)遞歸調(diào)用
returnn
*
fact(n-1)#每調(diào)用一次,問題規(guī)模減小1print(fact(5))
#輸出:1203.2遞歸求解猴子吃桃問題實(shí)例說明:猴子第一天摘下若干桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10
天早上想再吃時(shí),發(fā)現(xiàn)只剩下一個(gè)桃子。求第一天共摘了多少個(gè)桃子。思路:前一天桃子數(shù)量是后一天桃子數(shù)量加1之后再乘以2遞歸實(shí)現(xiàn)方法:定義一個(gè)遞歸函數(shù)peaches,接受天數(shù)n作為參數(shù)。基本情況:如果n為10,返回1。遞歸情況:如果n小于10,返回(peaches(n+1)+1)*2。3.2遞歸求解猴子吃桃問題defpeaches(days):
"""參數(shù)n為天數(shù),遞歸計(jì)算桃子數(shù)量,返回第一天摘了多少個(gè)桃子"""
ifdays==10:
#遞歸出口,第
10
天只有
1
個(gè)桃子
return1
#第
10
天只有
1
個(gè)桃子
else:
#遞歸調(diào)用,第
day
天的桃子數(shù)等于第
day+1
天的桃子數(shù)加
1
再乘以
2
return(peaches(days+1)+1)*2
#peach_count(days+1)第
days+1
天的桃子數(shù)total_peaches
=peaches(1)
#調(diào)用函數(shù)計(jì)算第
1
天的桃子數(shù)量print(f"第一天共摘了{(lán)total_peaches}個(gè)桃子")
#輸出:第一天共摘了1534個(gè)桃子實(shí)例3.3遞歸計(jì)算斐波那契數(shù)列
3.3遞歸計(jì)算斐波那契數(shù)列
deffibonacci(n):
"""定義遞歸函數(shù),接收非負(fù)整數(shù)n,返回斐波那契數(shù)列的第n項(xiàng)"""
ifn
<=1:
#
前兩項(xiàng)為0或1
returnn
else:
returnfibonacci(n
-
1)+fibonacci(n
-
2)
#
后一項(xiàng)等于前兩項(xiàng)之和 num
=int(input())
#
輸入非負(fù)整數(shù)
print(fibonacci(num))
#
調(diào)用遞歸函數(shù)求斐波那契數(shù)列的第n項(xiàng)并輸出實(shí)例3.4漢諾塔問題實(shí)例說明:假設(shè)有三根柱子,柱子上有若干直徑不同的圓盤,初始所有圓盤最開始都堆在第一根柱子上,最小的圓盤在最上面。目標(biāo)是將所有圓盤從第一根柱子移動(dòng)到第三根柱子。在移動(dòng)過程中,每次只能移動(dòng)一個(gè)圓盤。任何時(shí)候都不能將較大的圓盤放在較小的圓盤上。3.4漢諾塔問題思路:如果只有一個(gè)圓盤,直接從起始柱子移動(dòng)到目標(biāo)柱子如果有多個(gè)圓盤,可以將問題分解為三個(gè)子問題:先將n-1個(gè)圓盤從起始柱子移動(dòng)到輔助柱子再將第n個(gè)(最大的)圓盤從起始柱子移動(dòng)到目標(biāo)柱子最后將n-1個(gè)圓盤從輔助柱子移動(dòng)到目標(biāo)柱子3.3遞歸計(jì)算斐波那契數(shù)列def
hanoi(n,source,helper,target):"""使用遞歸解決漢諾塔問題
:paramn:圓盤的數(shù)量,source:起始柱子,helper:輔助柱子,target:目標(biāo)柱子"""
if
n==1:
#只剩一個(gè)圓盤時(shí),直接從source移到targetprint(f"移動(dòng)圓盤1從{source}
到
{target}")
else:
hanoi(n-1,source,target,helper)
#遞歸地將n-1個(gè)圓盤從source移到helper
print(f"移動(dòng)圓盤
{n}
從
{source}
到
{target}")
#移動(dòng)第n個(gè)圓盤到target
hanoi(n-1,helper,source,target)
#遞歸地將n-1個(gè)圓盤從helper移到targethanoi(3,
'A','B','C')
#圓盤數(shù)量為3時(shí)實(shí)例3.6函數(shù)文檔測(cè)試函數(shù)文檔測(cè)試在函數(shù)的文檔字符串中,可以增加文檔測(cè)試,檢驗(yàn)函數(shù)的輸出是否與預(yù)期相符。用引導(dǎo)符“>>>”加函數(shù)調(diào)用,下一行寫函數(shù)預(yù)期返回值def
is_leap(year):"""接受一個(gè)年份,判斷是否是閏年,返回True或False。
>>>is_leap(2000)True"""
ifyear%4==0
andyear%100!=0oryear%400==0:
returnTrue
else:
returnFalseprint(is_leap(2000))3.63.7函數(shù)注釋3.7函數(shù)注釋在函數(shù)參數(shù)和返回值中添加任意的元數(shù)據(jù),方便進(jìn)行文檔編寫、類型檢查,或者是其他用途。參數(shù)的類型提示:在參數(shù)后加半角逗號(hào)和類型返回值的類型提示:在函數(shù)定義的冒號(hào)前加“->”和類型名(無返回值函數(shù)的返回值類型為None) def
greeting(name:str)
->str: """接收表示名字的字符串為參數(shù),返回一句問候語,字符串類型。"""
return
'Hello'+name print(greeting(input()))
#以輸入的名字為參數(shù),輸出問候語3.8模塊化程序設(shè)計(jì)3.8模塊化程序設(shè)計(jì)將大型程序劃分為若干較小、獨(dú)立和可復(fù)用模塊的編程方法模塊可以包含相關(guān)的函數(shù)、類或變量,甚至是可執(zhí)行代碼,負(fù)責(zé)實(shí)現(xiàn)特定的功能降低程序復(fù)雜性,便于代碼的維護(hù)和擴(kuò)展分而治之減少耦合便于協(xié)作便于測(cè)試3.8.1創(chuàng)建和導(dǎo)入模塊創(chuàng)建模塊:只需將Python代碼保存為擴(kuò)展名為“.py”的文件#將以下代碼保存為“mymodule.py”,這個(gè)文件就是一個(gè)模塊,名為“mymodule”def
greet(name):#其中包含一個(gè)greet函數(shù),可以在其他Python文件中導(dǎo)入并使用
returnf"Hello,{name}!"導(dǎo)入模塊:使用import
語句將模塊導(dǎo)入到當(dāng)前的Python文件中#假設(shè)我們有一個(gè)新的文件“test.py”,其中需要使用“mymodule”模塊:import
mymodule#使用import語句可以將整個(gè)模塊導(dǎo)入result
=
mymodule.greet("Alice")
#通過“模塊名.函數(shù)名”的方式調(diào)用函數(shù)或變量print(result)
#輸出:Hello,Alice!3.8.2__name__屬性與模塊入口每個(gè)模塊都有一個(gè)特殊屬性“__name__”,表示模塊的名字。當(dāng)模塊被導(dǎo)入時(shí),它的值是模塊的名字當(dāng)模塊直接運(yùn)行時(shí),它的值是“__main__”__name__=="__main__"True:作為腳本運(yùn)行False:當(dāng)作模塊導(dǎo)入def
greet(name):returnf"Hello,{name}!“if
__name__=="__main__":#比較運(yùn)算結(jié)果為True
時(shí)才執(zhí)行此分支下的語句塊print(greet('World'))
#方便在模塊內(nèi)部進(jìn)行功能驗(yàn)證,不會(huì)干擾其他模塊3.8.3包的創(chuàng)建與使用在Python中,包是一個(gè)組織多個(gè)模塊的文件夾。包的本質(zhì)是一個(gè)包含有“__init__.py”文件的文件夾,可以將多個(gè)模塊組合在一起,形成一個(gè)有層次結(jié)構(gòu)的模塊集合。有效管理和組織項(xiàng)目中的模塊,將代碼分門別類,保持代碼整潔和可維護(hù)性模塊Module包Package庫Library3.8.3包的創(chuàng)建與使用——包的創(chuàng)建創(chuàng)建一個(gè)目錄,這個(gè)目錄將作為包的容器,包含所有相關(guān)的模塊文件。在包的目錄中創(chuàng)建一個(gè)“__init__.py”文件,告訴Python解釋器這個(gè)目錄應(yīng)該被視為一個(gè)包,否則無法作為包被導(dǎo)入。#創(chuàng)建一個(gè)名為my_package的包
my_package/├──__init__.py└──module1.py#包含兩個(gè)模塊└──module2.py1#module1.py的文件內(nèi)容defhello():
return
"Hellofrommodule1"2#module2.py的文件內(nèi)容defgreet(name):
return
f"Hello,{name}"3#__init__.py可以為空,也可以在這里導(dǎo)入包中的模塊,便于外部使用
from.module1importhello#從module1文件中導(dǎo)入hello函數(shù)from.module2importgreet#從module2文件中導(dǎo)入greet函數(shù)43.8.3包的創(chuàng)建與使用——包的使用創(chuàng)建好包之后,就可以在其他Python文件中導(dǎo)入包中的模塊或包本身。import語句導(dǎo)入包中的模塊from…
import…語句導(dǎo)入模塊中的特定函數(shù)
importmy_package.module1
print(my_package.module1.hello())#輸出:Hellofrommodule1!
frommy_package.module1importhello
print(hello())#輸出:Hello
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中職第一學(xué)年(護(hù)理倫理學(xué))護(hù)理職業(yè)道德階段測(cè)試題及答案
- 2025年大學(xué)大二(軟件工程)軟件測(cè)試技術(shù)綜合測(cè)試題及答案
- 2025年高職護(hù)理(護(hù)理技能考核)試題及答案
- 2025年大學(xué)(中藥學(xué))中藥資源學(xué)階段測(cè)試題及答案
- 2025年大學(xué)三年級(jí)(口腔醫(yī)學(xué)技術(shù))義齒制作工藝試題及答案
- 2025年高職電子(電子測(cè)量技術(shù))試題及答案
- 2025年高職機(jī)場(chǎng)鳥擊防范技術(shù)(機(jī)場(chǎng)鳥防基礎(chǔ))試題及答案
- 2025年高職工業(yè)機(jī)器人技術(shù)(工業(yè)機(jī)器人)試題及答案
- 2025年中職體育服務(wù)與管理(體育場(chǎng)館管理)試題及答案
- 2026年湖北國土資源職業(yè)學(xué)院單招綜合素質(zhì)考試備考題庫帶答案解析
- 混凝土修補(bǔ)方案及質(zhì)量驗(yàn)收標(biāo)準(zhǔn)方案
- DB50∕T 1798-2025 鄉(xiāng)村振興勞務(wù)品牌建設(shè)指南
- 青海西寧市2024-2025學(xué)年七年級(jí)上學(xué)期末調(diào)研測(cè)英語試卷
- 2025至2030雙光束紫外可見近紅外分光光度計(jì)行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- DB44∕T 2722-2025 公路工程造價(jià)管理指南
- 2025四川成都益民集團(tuán)所屬企業(yè)招聘財(cái)務(wù)綜合崗等崗位模擬筆試試題及答案解析
- 政府采購招標(biāo)代理機(jī)構(gòu)自查報(bào)告三篇
- 2025年公務(wù)員多省聯(lián)考《申論》(陜西A卷)題及參考答案
- 醫(yī)藥研發(fā)合成工作總結(jié)
- 2025年檢驗(yàn)科工作總結(jié)及2026年工作計(jì)劃6篇
- 省級(jí)課題答辯課件
評(píng)論
0/150
提交評(píng)論