python之函數

什麼是函數

函數是組織好的,可以重複使用的,用來實現單一或相關聯功能的代碼段,它能夠提高應用的模塊化和代碼的重複利用率。

函數的定義

在Python中可以使用def關鍵字來定義函數,和變量一樣每個函數也有一個響亮的名字,而且命名規則跟變量的命名規則是一致的。在函數名後面的圓括號中可以放置傳遞給函數的參數,這一點和數學上的函數非常相似,程序中函數的參數就相當於是數學上說的函數的自變量,而函數執行完成後我們可以通過return關鍵字來返回一個值,這相當於數學上說的函數的因變量。格式如下:

 def 函數名(參數類別):
    函數體
 return 表達式

舉個簡單的例子,定義個打印信息的函數。如下:

def print_info():
    print('--------------------------------------- ')
    print('          生命苦短,我用python          ')
    print('--------------------------------------- ')

函數的調用

定義了函數之後,就相當於有了一段具有特定功能的代碼,要想讓這些代碼能夠執行,需要調用函數。調用函數的方式很簡單,通過“函數名()”來調用。

函數的參數

定義函數的時候,我們把參數的名字和位置確定下來,函數的接口定義就完成了。對於函數的調用者來說,只需要知道如何傳遞正確的參數,以及函數將返回什麼樣的值就夠了,函數內部的複雜邏輯被封裝起來,調用者無需瞭解Python的函數定義非常簡單,但靈活度卻非常大。除了正常定義的必選參數外,還可以使用默認參數、可變參數和關鍵字參數,使得函數定義出來的接口,不但能處理複雜的參數,還可以簡化調用者的代碼。以下舉個簡單的例子:

def power(x):
    return x*x

定義函數時,可以給函數的參數設置默認值,這個參數就被稱爲默認參數。如果默認參數沒有傳入值,則直接使用默認的值。例如:

def print_info(name,age=35):
    print("Name:",name)
    print("age",age)

print print_info("zhangsan")
print print_info("zhangsan",age=40)

不定長參數

通常在定義一個函數時,諾希望函數能夠處理的參數個數比當初定義的參數個數多,此時可以在函數中使用不定長參數。

def 函數名 ([formal_args,] *args,**kwargs):
    函數體
    return 表達式

formal_args爲形參,args和kwargs爲不定長參數。當調用函數的時候,函數傳入的參數個數優先匹配formal_args參數的個數。如果傳入的參數個數和formal_args參數的個數相同,不定長參數會返回空的元組或字典;如果傳入參數的個數比formal_args參數的個數多,可以分兩種情況:
1、如果傳入的參數沒有指定名稱,那麼
args會以元組的形式存放這些多餘的參數
2、如果傳入的參數指定了名稱,如m=1,那麼**kwargs會以字典的形式存放這些被命名的參數。
例如:

def test(a,b,*args):
    print(a)
    print(b)
    print(args)

test(11,22)

遞歸函數

在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞歸函數。
舉個例子,我們來計算階乘n! = 1 x 2 x 3 x ... x n,用函數fact(n)表示,可以看出:
fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n

def fact(n):
    if n==1:
       return 1
    return n*fact(n-1)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章