python函数的作用复用代码_Python-函数和代码复用
函數(shù)的定義與使用
>函數(shù)的理解與定義
函數(shù)是一段代碼的表示
-函數(shù)是一段具有特定功能的、可重用的語句組
-函數(shù)是一種功能的抽象,一般函數(shù)表達特定功能
-兩個作用:降低編程難度 和 代碼復用
def () :
return
#計算n!
def fact(n) : #fact 函數(shù)名;n 參數(shù)
s = 1
for i in range(1, n+1):
s*=ireturn s #s 返回值
-函數(shù)定義時,所指定的參數(shù)是一種占位符
-函數(shù)定義后,如果不經過調用,不會被執(zhí)行
-函數(shù)定義時,參數(shù)是輸入、函數(shù)體是處理、結果是輸出(IPO)
>函數(shù)的使用及調用過程
調用是運行函數(shù)代碼的方式
#接上段代碼
a=fact(10)
-調用時要給出實際參數(shù)
-實際參數(shù)替換定義中的參數(shù)
-函數(shù)調用后得到返回值
>函數(shù)的參數(shù)傳遞
參數(shù)個數(shù):函數(shù)可以有參數(shù),也可以沒有,但必須保留括號
deffact() :print("我是一個沒有參數(shù)的函數(shù)")
可選參數(shù)傳遞:函數(shù)定義時可以為某些參數(shù)指定默認值,構成可選參數(shù)
def (,) :
return
#計算 n!//m
def fact(n, m=1) : #m=1為可選參數(shù)
s = 1
for i in range(1, n+1):
s*=ireturn s//m#fact(10) 3628800#fact(10,5) 725760
可變參數(shù)傳遞
函數(shù)定義時可以設計可變數(shù)量參數(shù),即不確定參數(shù)總數(shù)量
def (,*b) :
return
#計算 n!乘數(shù)
def fact(n, *b) : #*b可變參數(shù)
s= 1
for i in range(1, n+1):
s*=ifor item inb:
s*=itemreturns#fact(10,3) 10886400#fact(10,3,5,8) 435456000
參數(shù)傳遞的兩種方式:函數(shù)調用時,參數(shù)可以按照位置或名稱方式傳遞
def fact(n, m=1) :
s= 1
for i in range(1, n+1):
s*=ireturn s//m#fact( 10,5 ) 725760#fact( m=5,n=10 ) 725760
>函數(shù)的返回值
函數(shù)可以返回0個或多個結果
-return保留字用來傳遞返回值
-函數(shù)可以有返回值,也可以沒有,可以有return,也可以沒有
-return可以傳遞0個返回值,也可以傳遞任意多個返回值
def fact(n,m=1):
s=1
for i in range(1,n+1)
s*=ireturn s//m,n,m#fact(10,5) (725760,10,5)
#a,b,c=fact(10,5)
#print(a,b,c)
#725760 10 5
>局部變量與全局變量
n, s = 10, 100 #n,s時全局變量
deffact(n) :
s= 1 #fact()函數(shù)中的n s是局部變量
for i in range(1, n+1):
s*=ireturnsprint(fact(n), s) #n,s是全局變量#3628800 100
規(guī)則1:局部變量和全局變量是不同變量
-局部變量是函數(shù)內部的占位符,與全局變量可能重名但不同
-函數(shù)運算結束后,局部變量被釋放
-可以使用global保留字在函數(shù)內部使用使用全局變量
n, s = 10, 100 #n,s時全局變量
deffact(n) :global s #fact()函數(shù)中使用global保留字聲明 此處s是全局變量s
for i in range(1, n+1):
s*=ireturnsprint(fact(n), s) #此處全局變量s是被函數(shù)修改#362880000 362880000
規(guī)則2:局部變量為組合數(shù)據(jù)類型且未創(chuàng)建,等同于全局變量
ls = ["F", "f"] #通過使用[]真實創(chuàng)建了一個全局變量列表ls
deffunc(a) :
ls.append(a)#此處ls是列表類型,未真實創(chuàng)建 則等同于全局變量
returnfunc("C") #局部變量ls被修改
print(ls)#['F','f','C']
ls = ["F", "f"] #通過使用[]真實創(chuàng)建了一個全局變量列表ls
deffunc(a) :
ls= [] #此處ls是列表類型,真實創(chuàng)建ls是局部變量
ls.append(a)returnfunc("C") #局部變量ls被修改
print(ls)#['F','f']
使用規(guī)則
-基本數(shù)據(jù)類型,無論是否重名,局部變量與全局變量不同
-可以通過global保留字在函數(shù)內部聲明全局變量
-組合數(shù)據(jù)類型,如果局部變量未真實創(chuàng)建,則是全局變量
>lambda函數(shù)
lambda函數(shù)返回函數(shù)名作為結果
-lambda函數(shù)是一種匿名函數(shù),即沒有名字的函數(shù)
-使用lambda保留字定義,函數(shù)名是返回結果
-lambda函數(shù)用于定義簡單的、能夠在一行內表示的函數(shù)
= lambda :
等價于
def ():
return
f=lambda x,y:x+y
f=(10,15)#結果:25
f=lambda:"lambda函數(shù)"
print(f())#結果:lambda函數(shù)
謹慎使用lambda函數(shù)
-lambda函數(shù)主要用作一些特定函數(shù)或方法的參數(shù)
-lambda函數(shù)有一些固定的使用方式,建議逐步掌握
-一般情況,建議使用def定義的普通函數(shù)
代碼復用與函數(shù)遞歸
>代碼復用與模塊化設計
把代碼當成資源的抽象
-代碼資源化:程序代碼是一種用來表達計算的“資源”
-代碼抽象化:使用函數(shù)等方法對代碼賦予更高級別的定義
-代碼復用:同一份代碼在需要時可以被重復使用
函數(shù) 和 對象 是代碼復用的兩種主要形式
函數(shù):將代碼命名在代碼層面建立了初步抽象
對象:屬性和方法 . 和
分而治之
-通過函數(shù)或對象封裝將程序劃分為 模塊及 模塊間的表達
-具體包括:主程序、子程序和子程序間的關系
-分而治之:一種分而治之、分層抽象、體系化的設計思想
緊耦合 松耦合
-緊耦合:兩個部分之間交流很多,無法獨立存在
-松耦合:兩個部分之間交流少,可以獨立存在
-模塊內部緊耦合、模塊之間松耦合
>函數(shù)遞歸的理解
函數(shù)定義中調用函數(shù)自身的方式
兩個關鍵特征
-鏈條:計算過程存在遞歸鏈條
-基例:存在一個或多個不需要再次遞歸的基例
類似數(shù)學歸納法
-數(shù)學歸納法
-證明當n取第一個值n0時命題成立
-假設當nk時命題成立,證明當n=nk+1時命題也成立
-遞歸是數(shù)學歸納法思維的編程體現(xiàn)
>函數(shù)遞歸的調用過程
deffact(n):if n==0:return 1
else:return n*fact*(n-1)
函數(shù)+分支語句
-遞歸函數(shù)本身是一個函數(shù),需要函數(shù)定義方式描述
-函數(shù)內部,采用分支語句對輸入?yún)?shù)進行判斷
-基例和鏈條,分別編寫對應代碼
>函數(shù)遞歸實例解析
將字符串s反轉后輸出
defrvs(s):if s == "":returns
slse:return rvs(s[1:])+s[0]
斐波那契數(shù)列:一個經典的數(shù)列
deff(n):if n==1 or n==2:return 1
else:return f(n-1)+f(n-2)
has
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的python函数的作用复用代码_Python-函数和代码复用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 体感游戏机和vr的区别
- 下一篇: python合并列表重新排序_pytho