1. 程式人生 > 其它 >python基礎知識——函式

python基礎知識——函式

函式其實就是一段可以多次呼叫的程式碼。

1、函式的定義

格式

def 函式名(引數1[ = 預設值1], 引數2[ = 預設值2], ...):
    ...
    return 表示式

函式名的命名規則:

函式名可以是字母、數字或下劃線組成的字串,但是不能以數字開頭。

例如加法操作:

def addFunc(x, y):
    return x + y

print addFunc(1, 2)#3

2、函式的引數

在Python中,任何的變數都是物件,所以引數只支援引用傳遞的方式,在這樣的情況下,形式引數和實際引數都指向的是記憶體中的同一個儲存空間。

3、可變引數的問題

在函式的引數前使用識別符號“*”可以實現這個需求。“*”可以引用元組,把多個引數組合到一個元組中:

#coding:UTF-8
#傳遞可變引數

def func(* args):
    print args#返回的是元組
    
func(1, 2, 3)
#coding:UTF-8
#傳遞可變引數

def func(* t, ** d):
    #('one', 'two')
    #{'three': '3', 'two': '2', 'one': '1'}
    print t#返回的是元組
    print d#返回的是字典
    
func('one', 'two', one = '1', two = '2', three = '3')

注意:“*”必須寫在“**”之前。

4、lambda函式

lambda函式用於建立一個匿名函式,函式名未和識別符號進行繫結。

使用lambda函式可以返回一些簡單的運算結果。

格式

lambda 變數1, 變數2, ... : 表示式

另一種方法就是把lambda賦值給一個變數,此時的變數就可以作為函式使用。

格式

#賦值
func = lambda 變數1, 變數2, ... : 表示式
#呼叫
func()

例如加法運算

print (lambda x, y : x + y)(1, 3)

或者

func = lambda x, y : x + y

print func(1, 3)

5、Generator函式

生成器(Generator)的作用是一次產生一個數據項,並把資料項輸出。Generator函式可以使得迭代器的效能更佳。

格式

def 函式名(引數列表):
    ...
    yield 表示式

使用的是yield生成資料項。

Generator函式可以使用在for迴圈遍歷,而且可以通過next()方法獲得yield生成的資料項。

range()函式返回的是列表,如

#[0, 1, 2, 3, 4]
print range(5)

若要取出range()函式中的每一個數,可以使用Generator

def func(n):
    for i in range(n):
        yield i
        
r = func(5)
print r.next()#0
print r.next()#1
print r.next()#2
print r.next()#3
print r.next()#4