溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Python的函數(shù)

發(fā)布時間:2020-08-25 14:06:00 來源:億速云 閱讀:198 作者:Leah 欄目:編程語言

本篇文章為大家展示了什么是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、增加              
-----------------------------------
請輸入你的選擇:

七、局部變量和全局變量

什么是Python的函數(shù)

說明:上面程序中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ù)參與運算。

什么是Python的函數(shù)

運行結(jié)果為:

什么是Python的函數(shù)

十、匿名函數(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è)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI