Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第3章 函數(shù)_第1頁
Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第3章 函數(shù)_第2頁
Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第3章 函數(shù)_第3頁
Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第3章 函數(shù)_第4頁
Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第3章 函數(shù)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論