1. 程式人生 > >python之函式定義和引數隨筆

python之函式定義和引數隨筆

python中使用關鍵字def來表示函式的定義。如下所示:

def make_shirt(size, mess):
    print("the shirt's size is:" + str(size) + " and message is"+mess)

定義了一個函式名為make_shirt的函式,其中函式的引數可有可無,當沒有引數時其括號和冒號是必不可少的,函式直接定義為:

def make_shirt():
    print("this is demo")

一. 函式的引數

在Python中定義函式,可以用必選引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數,這5種引數都可以組合使用。但是請注意,引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。

必選引數(位置引數):

def func1(a, b):  #定義一個函式:包含兩個引數a,b(a,b為位置引數)
    print a, b

func1(1, 2)     #呼叫時,這兩個引數必填,如果只傳入一個引數或不傳入引數,報異常

預設引數:

def func1(a, b=4): #定義func1函式,包含位置引數a,預設引數b,預設值為4
    print a, b

func1(1) #呼叫函式時,可以不用傳預設引數,值預設為4
func1(1,2) #呼叫函式時,傳預設引數時值為傳入的值為2

可變引數:

def func1(numbers):      #定義位置引數函式
    for num in numbers:
        print num

func1((1, 2, 3))        #呼叫時需要傳入元組或列表
func1([4, 5, 6])

def func2(* numbers):     #定義可變引數函式
    for num in numbers:
        print num

func2(1, 2)               #呼叫時可以傳入任意個數引數
func2(3, 4, 5)

number = ["23", "rose"]
func2(* number)         #傳入一個列表時可以用 * 變數名 來操作

關鍵字引數:

def func1(**numbers):    #定義一個傳入關鍵字引數的函式
    print numbers

extra = {'city': 'Beijing', 'job': 'Engineer'}  #定義一個字典
func1(city=extra['city'], job=extra['job'])     #呼叫func1函式,傳入兩個引數
func1()                                         #未傳入引數
func1(**extra)                                  #傳入整個字典
func1(city=extra['city'])                       #傳入1個引數