[Python]學習基礎篇:函數
函數是一段特定功能的,被封裝的,可重用的程序代碼段。給這段程序一個名稱,然後就可以在其他程序的任何地方通過這個名稱任意地運行這個斷碼塊。
函數的定義及調用
對於Python函數的定義,不同於大家熟知的c,java等編程語言的定義,以java為例,在定義函數時,要指明函數的返回值類型,要麽為void,要麽為替他數據類型,同時定義函數時也可以指明函數為私有,共有,靜態等,而Python函數的定義非常簡單,如下:
格式:def function_name([參數]):
對於函數的調用直接在主函數體重使用方法名+參數就行
局部變量和全局變量
局部變量:在函數體中起作用的變量,而其他函數體無法使用。
全局變量:在函數內部給一個定義在函數外能夠賦值的變量。
格式:global 變量1,變量2….
參數的類型
(1).默認參數
默認參數是指在定義函數參數時,給參數設置默認值,調用函數時可以給此參數傳值,也可以不傳。
註意:對於默認參數的定義,要放在替他參數之後。
(2).關鍵參數
關鍵參數指在函數中有多個參數時,調用函數時不想安裝參數的順序進行傳值,可以通過命名為參數賦值。
(3).可變長度參數
你可能需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數,和上述2種參數不同,聲明時不會命名。基本語法如下:
def func(*pa):
使用標識符’*’表示參數的長度可以變化,此時參數以tuple的形式出現。
那麽如果我們想在傳遞參數時,給函數傳遞一個dict怎麽辦呢?
此時使用’**’標識符可以實現傳遞一個字典
(4).序列參數
在Python中默認的使用序列作為參數,只能實現單變量的傳遞,但是對於參數個數不匹配的問題時,在實參前加*可以實現把實參分解給各個形參,實現傳遞list。
例題
(1).編寫函數,判斷一個年份是否為閏年。
(2).編寫函數,判斷一個數是否為水仙花數。
高階函數
什麽什高階函數呢?
首先我們看變量指向函數
在編程語言中我們可以將一個值賦給變量,那麽可不可以將函數賦給變量呢?我們舉一個例子:abs(x)
既然函數可以賦值給變量,函數在傳值時傳入的是變量,那麽一個函數也可以接受哪一個函數作為參數,那麽這種函數就稱之高階函數
例如:
返回函數
對於一般函數而言要麽返回一個值,要麽不返回。既然在傳入參數時可以傳入函數,那麽在返回時也可以返回函數。
例如:我們在代碼前面調用一個函數,但是此時不需要這個函數結果,而是在後面的代碼中,根據需要再計算怎麽辦?此時可以不返回結果,而是返回求和的函數。
註意:在函數內部定義一個函數時不要使用循環語句。
[Python]學習基礎篇:函數