您好,登錄后才能下訂單哦!
本篇文章為大家展示了什么是Python的函數(shù),代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
一、函數(shù)的介紹
如果在開發(fā)程序時,需要某塊代碼多次,但是為了提高編寫的效率以及代碼的重用,所以把具有獨立功能的代碼塊組織為一個小模塊,這就是函數(shù)。
函數(shù)的語法格式:
def 函數(shù)名(): 函數(shù)的功能代碼
注意:python不像其他編程語言使用{}控制作用域,python嚴格使用縮進控制作用域,所以在python中使用,函數(shù)要嚴格的控制縮進。
二、函數(shù)的調(diào)用
定義了函數(shù)之后,就相當于有了一個具有某些功能的代碼,想要讓這些代碼能夠執(zhí)行,需要調(diào)用它,調(diào)用函數(shù)很簡單的,通過 函數(shù)名() 即可完成調(diào)用。
def printMenu(): print("-----------------------------------") print(" 1、查詢 ") print(" 2、修改 ") print(" 3、增加 ") print("-----------------------------------") #函數(shù)的調(diào)用 printMenu() #函數(shù)可以重復調(diào)用 printMenu()
運行結(jié)果為:
----------------------------------- 1、查詢 2、修改 3、增加 ----------------------------------- ----------------------------------- 1、查詢 2、修改 3、增加 -----------------------------------
說明:
1.函數(shù)在調(diào)用前,一定要先聲明定義,才能使用函數(shù)
2.在聲明定義好之后,可以在需要的地方多次調(diào)用。
3.函數(shù)的調(diào)用就是函數(shù)名(),例如代碼匯總的printMenu()。
三、帶有參數(shù)的函數(shù)
參數(shù)分為實參和形參兩種形式:
實參 – 在調(diào)用函數(shù)的時候給函數(shù)參與運算的真實數(shù)據(jù)
形參 – 在函數(shù)聲明的時候用來給真實數(shù)據(jù)做占位使用的虛擬數(shù)據(jù)
帶參數(shù)函數(shù)的定義格式:
def 函數(shù)名(形參1,形參2,形參3....): 要執(zhí)行的代碼
舉個例子:
#定義一個具有兩個形式參數(shù)的函數(shù) def sum(a,b):#a,b就是形參 result = a+b print(result) #sum()函數(shù)的調(diào)用 sum(4,5)#4,5就是真實參數(shù)
運行結(jié)果為:9
帶參數(shù)函數(shù)的精髓就是,可以靈活的處理數(shù)據(jù)的運算。
四、函數(shù)的返回值
所謂“返回值”,就是程序中函數(shù)完成一件事情后,最后給調(diào)用者的結(jié)果,就像一個例子中,計算a+b的值是直接打印出來了,但是現(xiàn)在我不想在函數(shù)里面打印出來了,我需要在函數(shù)外面使用這個結(jié)果繼續(xù)參與其他運算該怎么辦呢?這就需要定義帶返回值的函數(shù)了。
帶返回值的函數(shù)聲明定義格式:
def function(形參...): 函數(shù)執(zhí)行的代碼 return 返回值
舉個例子:
def sum(a,b): result = a+b return result#result就是程序要返回出去的值 res = sum(4,5) print(res)
運行結(jié)果為:9
五、函數(shù)的類型
按照格式來劃分有四種類型,具體可以根據(jù)使用場景合理的設計函數(shù)的類型。
1.無參無返回值函數(shù)
2.有參無返回值函數(shù)
3.無參有返回值函數(shù)
4.有參有返回值函數(shù)
六、函數(shù)的嵌套調(diào)用
一個函數(shù)里面卻可以使用其他函數(shù),這叫做函數(shù)的嵌套調(diào)用。
def printMenu(): print("-----------------------------------") print(" 1、查詢 ") print(" 2、修改 ") print(" 3、增加 ") print("-----------------------------------") def main(): #在main()中調(diào)用printMenu()函數(shù) printMenu() print("請輸入你的選擇:") main()
運行結(jié)果為:
----------------------------------- 1、查詢 2、修改 3、增加 ----------------------------------- 請輸入你的選擇:
七、局部變量和全局變量
說明:上面程序中a是全局變量,b是局部變量,所以代碼在第8行出錯,錯誤提示 NameError: name ‘b’ is not defined b變量沒有定義。
局部變量,就是在函數(shù)內(nèi)部定義的變量。
不同的函數(shù),可以定義相同的名字的局部變量,但是各用個的不會產(chǎn)生影響。
局部變量的作用,為了臨時保存數(shù)據(jù)需要在函數(shù)中定義變量來進行存儲,這就是它的作用。
全局變量既能在一個函數(shù)中使用,也能在其他的函數(shù)中使用,
局部變量和全局變量重名,函數(shù)內(nèi)使用的是局部變量的值,不影響外面的全局變量的值。
a = 1#全局變量 print("---1---: %d"%(a)) def test1(): b = 2#局部變量,只能在test1中使用 print("---2---: %d"%(b)) def test2(): a = 3#局部變量,只能在test2中使用 b = 4#局部變量,只能在test2中使用 print("---3---: %d"%(a)) print("---4---: %d"%(b)) test1() test2() print("---5---: %d"%(a))
運行結(jié)果為:
---1---: 1 ---2---: 2 ---3---: 3 ---4---: 4 ---5---: 1
上面的例子可以看出,局部變量和全局變量重名,并不會修改全局變量的值,但是當我們在一個函數(shù)中,就需要修改全局變量的值怎么辦呢?只需要在函數(shù)內(nèi)使用global修飾全局變量即可。
a = 1#全局變量 print("---1---: %d"%(a)) def test1(): b = 2 print("---2---: %d"%(b)) def test2(): global a #在函數(shù)內(nèi)部直接使用全局變量 a = 3 #修改全局變量的值 b = 4 print("---3---: %d"%(a)) print("---4---: %d"%(b)) test1() test2() print("---5---: %d"%(a))
運行結(jié)果為:
---1---: 1 ---2---: 2 ---3---: 3 ---4---: 4 ---5---: 3
第3次和第5次一樣說明全局變量在函數(shù)內(nèi)部修改成功。
八、缺省參數(shù)
定義函數(shù)的時候可以某個參數(shù)指定默認值,具有默認值的參數(shù),就叫做缺省參數(shù)。
帶有默認值的參數(shù)一定要位于參數(shù)列表的最后面。
def printInfo(name,age = 18): print("name = %s,age = %d"%(name,age)) printInfo("Se7eN_HOU") printInfo("Se7eN_HOU",28)
運行結(jié)果為:
name = Se7eN_HOU,age = 18 name = Se7eN_HOU,age = 28
第一次age未傳值的時候,打印出來的是默認值18,第二次打印的是傳進來的值28。
九、不定長參數(shù)
使用場景:例如定義一個求兩個數(shù)之和的函數(shù),然后在編寫一個求三個數(shù)之和的函數(shù),也就是說,這樣的話每多一個數(shù)就要編寫一個函數(shù),很麻煩,這里就需要設計成為一個具有不定長參數(shù)的函數(shù)。
1、帶一個 “*” 的參數(shù)
用一個星號 “ * ”修飾的參數(shù)是元組類型,在使用的時候可以將傳遞多來的實際有多少個參數(shù)都放在元組里面。
def sum(*agrs): result = 0 for x in agrs: result += x print(result) sum(1) sum(1,2) sum(1,2,3)
運行結(jié)果為:1、3、6
2、帶兩個“**”的不定長參數(shù)
用兩個星號“**”修飾的參數(shù)是字典類型,在使用的時候可以以字典的形式傳遞多個值給到函數(shù)參與運算。
運行結(jié)果為:
十、匿名函數(shù)
用lambda關(guān)鍵詞能創(chuàng)建小型匿名函數(shù)。這種函數(shù)得名于省略了用def聲明函數(shù)的標準步驟。lambda函數(shù)的語法只包含一個語句,如下:
lambda [arg1 [,arg2,...,agrn]]:expression
實例如下:
sum = lambda arg1,agr2:arg1+agr2 #調(diào)用sum函數(shù) print("sum :%d"%sum(10,20))
運行結(jié)果為:30
Lambda函數(shù)能接收任何數(shù)量的參數(shù)但只能返回一個表達式的值。
匿名函數(shù)不能直接調(diào)用print,因為lambda需要一個表達式。
使用場景
1、函數(shù)作為參數(shù)傳遞
def fun(a,b,opt): print("a=%s"%(a)) print("b=%s"%(b)) print("result = %s"%opt(a,b)) fun(1,2,lambda x,y:x+y)
運行結(jié)果為:
a=1 b=2 result = 3
2、作為內(nèi)置函數(shù)的參數(shù)
stus = [{"name":"zhangsan","age":18},{"name":"lis","age":19},{"name":"wangwu","age":17}]
按name排序
stus.sort(key = lambda x:x["name"]) print(stus)
運行結(jié)果為:[{'name': 'lis', 'age': 19}, {'name': 'wangwu', 'age': 17}, {'name': 'zhangsan', 'age': 18}]
按age排序
stus.sort(key =lambda x:x["age"]) print(stus)
運行結(jié)果為:[{'name': 'wangwu', 'age': 17}, {'name': 'zhangsan', 'age': 18}, {'name': 'lis', 'age': 19}]
上述內(nèi)容就是什么是Python的函數(shù),你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。