分析python對函數的理解介紹

高洛峰
發布: 2017-03-14 13:26:08
原創
1191 人瀏覽過

函數的定義

def functionname(arg):

#     Suite

     Return [expression]

1.def 定義函數時的關鍵字

2.functionname 函數名

3.arg函數的參數名,傳入不同的參數,返回值也不同,透過參數的傳遞使函數的功能得以實現。

4.Suite是實作函數函數的程式碼段

5.return 後面接的表達式就是函數的回傳。

函數的呼叫

functionname(arg)  函數名稱(參數)

函數被呼叫後傳回的就是return表達式的值

函數調用時的參數要嚴格按照函數定義的時候的參數來進行傳遞。

Return 後面接著的是表達式,不能接賦值語句。

函數的參數

必備參數:(當函數定義時)

函數的參數在定義時只有參數名,沒有值,這種定義的方式使得函數呼叫時一定得傳入參數才能夠正常的呼叫函數。必備參數的個數和順序必須是和定義時是一致的,除非呼叫時使用了關鍵字參數就可以改變參數順序傳入。

預設參數:(函數定義時)

函數的參數在定義時給了初始值,這時參數在呼叫時如果不傳入值給這個參數,函數就會使用定義時的預設值,如果傳了值進來給這個參數,那麼預設值就會被丟棄而使用你傳進來的這個值。

關鍵字參數:(函數呼叫時)

關鍵字參數是指的在函數呼叫的時候,傳參時把定義函數時參數名稱和對應的值一起傳入函數中,這時傳入的參數的順序就不用考慮了。

不定長參數:(定義和呼叫都可以用)

函數在定義時不確定要傳入的參數的個數時使用

*args 代表元組,args是元組的名字,傳入的值就是這個元組的元素,這種參數不接受關鍵字參數。

**kwargs 代表字典,kwargs是這個字典的名字,呼叫時使用關鍵字參數,把參數當作字典的元素,參數名為字典的鍵,參數值為字典的值。

這兩個參數可以同時使用,但必須*args在前面,kwargs在後面,函數呼叫時要把直接傳的值放在關鍵字參數的前面。

*args和**kwargs也可以在函式呼叫時的使用。

當我們清楚了函數定義時參數的個數和順序時,我們可以把需要傳入的參數組合成元組,使用*+元組名進行傳參來呼叫函數。

我們把需要傳遞進去的參數的參數名稱當作字典的鍵,參數的值當作字典的值,再把這個由需要傳遞的進去的參數組成的字典用**+字典名進行傳參來呼叫函數

 

註:呼叫函數時參數要根據函數定義時的參數的數量和型別進行值的傳遞時,一定要清楚當函數定義時參數是什麼類型的參數,只有傳進去的參數能與定義時相符才能正確的呼叫傳回函數的回傳值

 

全域變數與局部變數

定義:

全域變數:定義在函數外的擁有全域作用域的變量,可以在整個程式範圍內存取

全域變數可以在函數內被存取但不可以在函數內被修改。

局部變數:定義在函數內部的擁有一個局部作用域的變量,只能在其被宣告的函數內部存取。

 

變數的作用域

變數的在哪裡被賦值的就決定了這個變數作用的區域。

 

global關鍵字:

在函數內使用global 關鍵字申明這個變數是全域變量,使用global在這個函數內對這個變數進行修改時,會使得每次呼叫這個函數時都會修改這個全域變數的值。

匿名函數

基本形式:

lambda arg : expression

使用關鍵字lambda,arg是函數參,expression是匿名函數的回傳值

它既不能包含控制結構也沒有return語句,傳回的值就只是表達式計算後得到的值。

使用lambda可以省下函數定義的過程,可以使得程式碼更精簡。

對於有些只需要使用一兩次的函數,使用lambda也不需要考慮函數命名的問題。

內建函數 filter,map

內嵌函數與閉包

概念

函數裡面再嵌套一個函數,外面的函數的的返回值return裡面的函數,這時裡面的函數可以訪問到外面這個函數的的變量,在函數外部我們不能直接調用裡面的函數,但能通過外面函數的返回值來呼叫裡面的函數,我們稱這種現象為閉包。

裝飾器

使用函數的嵌套,外層函數傳進來的參數是一個函數物件,裡層函數對傳進來的這個函數進行加工處理後再傳回處理後的函數。

 

遞迴函數

##

以上是分析python對函數的理解介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板