python函數,定義,參數,返回值


python中可以將某些具備一定功能的代碼寫成一個函數,通過函數可以在一定程度上減少代碼的冗余,節約書寫代碼的時間。因為有一些代碼實現的功能我們可能會在很多地方用到。

1、函數的聲明與定義

通過def關鍵字聲明函數,函數名可以自定義,一般時要求做到見名知義,在函數體內我們可以書寫實現功能的代碼

函數一般分為無參函數,有參函數。無參函數就像下面這樣

'''
函數定義:
def 函數名():
    函數體
'''


def fun():
    pass

簡單的有參函數一般是下面這樣

def fun(x,y):
    pass

其中x,y成為函數的形參

2、函數參數的划分

函數參數一般分為,位置參數,默認值參數,可變長度參數

當定義函數時,參數的順序一般是位置參數在前,默認值參數隨后,可變長度參數最后。可變長度參數一般有分為兩種,擁有不同的寫法。

僅含有位置參數的例子,如下

def fun(name, age):  # name, age 是位置參數,也是函數的形參
    print(name, age)


fun('ajune', 18)     # 'ajune', 18是函數的實參,分別對應name, age

含有位置參數和默認值參數的例子,如下

def fun(name, age, gender='男'):    # gender 為默認參數,在函數定義時賦初值,僅調用時才可能會變化 
    print(name, age, gender)


fun('ajune', 18)             # ajune 18 男
fun('ajune', 18, '男')       # ajune 18 男
fun('ajune', 18, '女')       # ajune 18 女

默認值參數在調用函數時如果不賦予新的值,那么其值將不會變化。其中函數的參數可以全部是位置參數也可以全部是默認參數。

含有不定長參數的例子之一

def fun(name, *args):
    print(name, args)


fun('ajune', 18)          # ajune (18,)
fun('ajune', 18, '男')    # ajune (18, '男')

當含有多個參數時,*args會接收除了位置參數剩余的參數,並且是元組的形式接收,而且當我們傳入一個列表時也會被*args接收,可以將額外的參數寫成一個元組或者列表,通過下面的方式可以得到相同的效果。

def fun(name, *args):
    print(name, args)


info = (18, '男')
info1 = [18, '男']
fun('ajune', *info)
fun('ajune', *info1)

含有不定長參數的例子之二

另外一種不定長參數就是**kwargs類型的,特點是只接收鍵值對形式的額外參數,接收參數也有兩種形式,可以直接寫成鍵值對的形式,也可以寫成一個字典,將字典作為參數傳入

def fun(name, **kwargs):
    print(name, kwargs)


info = {'age': 18, 'gender': '男'}

fun('ajune', age=18, gender='男')
fun('ajune', **info)

可以看出傳入的參數從左至右對應,首先位置參數分配完參數,由於后面的就是*args,所以3,4,5會全部被*args接收,而a的值依然是默認值沒有改變,如果想要修改的話,在調用時需要鍵值對的形式,例如這樣子寫

foo(1, 2, 3, 4, 5, a=9, b=3, c=4, d=5)

。由於后面的是b=3所以會對應形參的b,最后的c=4,d=5便會被**kwargs接收。

 

3、函數的返回值

python函數可以具備返回值,其中返回值的類型是多種多樣的,可以是列表,元組,字典......

使用return可以將某個值返回,但是如果函數中沒有寫return語句,那么默認返回None,一個函數中只會有一條return語句被執行

函數的返回值可以被其他變量接收。

def fun():
    return 'haha'


result = fun()
print(result)

函數的返回值可以是一個函數,多用於函數的嵌套


def fun():
    def fun1():
        return 'haha'

    return fun1()


result = fun()
print(result)

其中函數的返回值還可以是函數名,下面的例子與上面的例子結果是一樣的,不同的是返回的是函數名,其實返回的還是函數的內存地址,當被變量接收后,通過變量名()的方式進行調用

def fun():
    def fun1():
        return 'haha'

    return fun1


result = fun()
print(result())

函數的return語句里面可以寫多個值,當返回時,隱式的以元組方式返回

def fun():
    x, y = 1, 2
    return x, y


result = fun()
print(result)  # 打印結果(1, 2)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM