何爲函數,如果在開發程序時,需要某塊代碼多次,但是爲了提高編寫的效率以及代碼的重用,所以把具有獨立功能的代碼塊組織爲一個小模塊,這就是函數。
如何定義一個函數,定義函數的格式,
def func(): pass比如我們定義一個具有打印功能的函數,
def func(): print("hello python") func()
定義好函數後,直接 函數名()即可調用函數,定義完函數的時候函數不會自動執行,需要調用纔會運行。
函數的文檔的說明。有時候我們需要對函數進行文本解釋,讓別人知道我們寫的函數是什麼功能。一般我們會在函數定義以後用雙引號和三引號來寫一段文檔對函數進行說明。建議最好使用三引號,這樣可以換行。當需要查看文檔說明時,可以用help函數,help(函數名)。示例:
def func(): """這是一個 打印函數""" print("hello python") func() help(func)
運行結果:
hello python
Help on function func in module __main__:func()
這是一個打印函數
函數傳參。有時候,我們需要給函數傳參數,這時就需要定義有參數的函數了。示例:
def add2num(a, b):
c = a+b
print c
調用有參函數。add2num(11, 22) # 調用帶有參數的函數時,需要在小括號中,傳遞數據
函數返回值。如果函數想將值返回給函數的調用者,需要使用return。return可以結束函數的執行。如果return多個值時,比如return a ,b ,則默認返回的是一個元祖。示例:
def add2num(a, b):
c = a+b
return c
調用有返回值的函數,在調用有返回值的函數時,因爲函數有返回值,所以我們需要保存函數的返回值。也就是需要用東西來接收函數的返回值。示例:
#定義函數
def add2num(a, b):
return a+b
#調用函數,順便保存函數的返回值
result = add2num(100,98)
#因爲result已經保存了add2num的返回值,所以接下來就可以使用了
print(result)
函數根據有沒有參數,有麼有返回值,可以相互組合,一共有四種組合:
- 無參數,無返回值
- 無參數,有返回值
- 有參數,無返回值
- 有參數,有返回值
局部變量:定義在函數內部的變量,作用範圍只在函數內部,在函數外部無效,所以在兩個不同的函數內部定義兩個相同的變量是不會報錯的。當函數被調用時,局部變量被創建,函數運行結束後,變量被銷燬。
全局變量:既能在函數內部使用,也能在函數外部使用的變量叫做全局變量。簡單來說就是定義在函數外面的變量,全局變量能在所以函數中進行訪問。
注意點:當全局變量與局部變量重名時,我們認爲在函數內部的變量爲函數創建的局部變量,而不是修改全局變量。在函數中如果需要修改全局變量,需要使用 global 關鍵字。
缺省參數。在形參中默認有值的參數叫缺省參數。調用函數的時候,如果沒有給缺省參數傳值,則取默認值。注意點:缺省參數一定要寫在參數列表的最後。
不定長參數。有時候需要函數能處理比聲明時更多的參數,這些參數叫做不定長參數,聲明時不會命名。格式:
def functionname(*args, **kwargs):
"""函數_文檔字符串"""
pass
*args會存放所有未命名的變量參數,args爲元組;** kwargs會存放命名參數,即形如key=value的參數, kwargs爲字典.
注意點:
- 如果很多個值都是不定長參數,那麼這種情況下,可以將缺省參數放到 *args的後面, 但如果有**kwargs的話,**kwargs必須是最後的