1. 程式人生 > >Python函式簡介

Python函式簡介

函式:

指在開發程式時,需要某塊程式碼使用多次,為了提高編寫的效率和程式碼的複用,把具有獨立功能的程式碼塊組織為一個小模組,這就是函式。

函式的定義:

def 函式名():
	程式碼
呼叫函式:定義完函式的時候,函式時不會立即自動執行,需要呼叫才會執行,我們通過函式名()就可以呼叫並執行函數了。在函式中使用return會結束這個函式。後面的程式碼再華麗也不會被執行。但一個return返回了多個引數,會以元組的形式進行輸出。
函式需要有返回值,這樣才能對函式處理的結果進行接下來的操作。
如果在程式碼中執行了help(test):可以看到函式的文件說明。
定義帶有引數的函式:
 def add2num():
   a = 11
   b = 22
   c = a+b
   print c

呼叫執行帶有引數的函式的時候,引數需要寫在函式名後面的小括號中,傳遞引數,不可少!
總結:定義函式時,寫在小括號中的引數,用來接受引數,稱為形參。
	呼叫函式時,寫在小括號中的引數,用來傳遞引數,稱為實參。注意實參在沒有用關鍵字形式執行的時候,當有多個引數的時候,傳遞時有一一對應關係,即有先後順序。
	函式同樣可以巢狀使用。

函式的基本知識

1.區域性變數:
	區域性變數就是指在函式中定義的變數,作用範圍只在這個函式中,在函式外部是不能使用的,常常用在需要在函式中儲存資料進行儲存的,函式中存在,函式執行結束就不存在了。
2.全域性變數:
	是指在函式外定義的變數,可以在所有的函式中進行訪問。
	注意:如果全域性變數和區域性變數同名,代表的是在函式內部定義了一個區域性變數,而不是修改了全域性變數的值。想要修改全域性變數的值,可以是用global函式進行宣告即可。
3.預設引數
	是指在定義函式的時候,形參是用鍵值對的引數儲存的,那麼在呼叫函式的時候,如果沒有傳入對應的實參,那麼就用預設值。在定義預設引數的時候,一定要放在引數列表的最後面。
4.不定長引數
	有時候我們可能需要一個函式能夠處理比當初宣告函式是更多的引數,這個引數就叫做不定長引數,加了*的引數args會存放所有未命名的變數引數,args為元組。加了**的引數kwargs會存放命名引數,kwargs為字典。
5.可變型別:資料能夠修改
   不可變型別:資料不能直接修改

遞迴函式

遞迴函式是指在函式內部自己呼叫自己。注意在使用遞迴函式的時候,需要有一個終止條件。
例如計算階乘:
def calNum(num):
	if num >= 1:
		result = num * calNum(num -1)
	else:
		result = 1
	return result

匿名函式

用lambda關鍵字能夠建立小型匿名函式,這種函式得名於省略了def宣告函式的標準步驟。
lambda函式能夠接受任何數量的引數,但是隻能返回一個表示式的值。
匿名函式不能直接呼叫print函式,因此需要一個表示式。
變數名 = lambda 形參1,形參2 …… : 表示式
呼叫匿名函式時通過變數名(實參1,實參2)實現的。

舉例:

	stus = [
    {"name": "zhangsan", "age": 18}, 
    {"name": "lisi", "age": 19}, 
    {"name": "wangwu", "age": 17}
]

通過age對字典裡的值進行排序。

>>> stus.sort(key = lambda x: x['age'])
>>> stus
[{'age': 17, 'name': 'wangwu'}, {'age': 18, 'name': 'zhangsan'}, {'age': 19, 'name': 'lisi'}]

列表推導式

就是指輕量級迴圈建立列表
1.基本方式
 	a = [x  for x  in range(4)]           #  a = [1,2,3,4]
2.在if迴圈中使用
	a = [ x for x in range(3,10) if x % 2 == 0]           # a = [4,6,8]
3.在for迴圈中使用
	a = [ (x,y) for x in range(1,3) for y in range(3)]          #[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]

set list tuple

set集合的定義是{1,2,3,4,5,4,3,2}   但是set集合,相同的資料值儲存一份,不支援索引。
list的定義是[1,2,3,4,5,4,3,2],可以重複,可以修改。有索引。
tuple的定義是(1,2,3,4,5,4,3,2)可以重複,不可修改,有索引。