溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python的函數(shù)形參和返回值是什么

發(fā)布時(shí)間:2022-03-16 10:24:51 來源:億速云 閱讀:157 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了python的函數(shù)形參和返回值是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇python的函數(shù)形參和返回值是什么文章都會(huì)有所收獲,下面我們一起來看看吧。

    函數(shù)的返回值

    一個(gè)函數(shù)執(zhí)行后可以返回多個(gè)返回值

    def measure():
        print('測量開始。。。。')
        temp=39
        wetness=50
        print("測量結(jié)束")
        #元組--可以包含多個(gè)數(shù)據(jù),因此可以使用元組一次返回多個(gè)值
        return (temp,wetness)
    result=measure()
    print(result)

    運(yùn)行結(jié)果:

    測量開始。。。。
    測量結(jié)束
    (39, 50)

    def measure():
        print('測量開始。。。。')
        temp=39
        wetness=50
        print("測量結(jié)束")
        #元組--可以包含多個(gè)數(shù)據(jù),因此可以使用元組一次返回多個(gè)值
        return (temp,wetness)
    #如果函數(shù)返回的類型是元組,同時(shí)希望單獨(dú)的處理元組中的元素
    #可以使用多個(gè)變量,一次接收函數(shù)的返回結(jié)果
    #使用多個(gè)變量接收結(jié)果時(shí),變量的個(gè)數(shù)應(yīng)該和元組的元素個(gè)數(shù)一致
    gl_temp,gl_wetness=measure()
    print(gl_temp)
    print(gl_wetness)

    運(yùn)行結(jié)果:

    測量開始。。。。
    測量結(jié)束
    (39, 50)

    交換兩個(gè)變量的值

    a=6
    b=100
    #使用其他變量
    c=a
    a=b
    b=c
    #不使用其他變量
    a=a+b
    b=a-b
    a=a-b
    #python專有
    a,b=b,a
    print("a的值為 %d"%a)
    print("b的值為 %d"%b)

    函數(shù)的參數(shù)

    不可變參數(shù)和可變參數(shù)

    在函數(shù)內(nèi)部,針對(duì)參數(shù)使用賦值語句,不會(huì)改變調(diào)用函數(shù)時(shí)傳遞的實(shí)參的值
    無論傳遞的參數(shù)是可變還是不可變,只要針對(duì)參數(shù)使用賦值語句,會(huì)在函數(shù)內(nèi)部修改局部變量的引用,不會(huì)影響到外部變量的引用

    def demo(num,num_list):
        print("函數(shù)內(nèi)部")
        #在函數(shù)內(nèi)部,針對(duì)參數(shù)使用賦值語句,形參的引用發(fā)生了變化,但是實(shí)參的引用沒變
        num=200
        num_list=[1,2,3]
        print(num)
        print(num_list)
        print("函數(shù)內(nèi)部代碼完成")
    gl_num=99
    gl_list=[2,3,4]
    demo(gl_num,gl_list)
    print(gl_num)
    print(gl_list)

    運(yùn)行結(jié)果:

    函數(shù)內(nèi)部
    200
    [1, 2, 3]
    函數(shù)內(nèi)部代碼完成
    99
    [2, 3, 4]

    如果傳遞的參數(shù)是可變類型,在函數(shù)內(nèi)部,使用方法修改了數(shù)據(jù)的內(nèi)容,同樣會(huì)影響到外部的數(shù)據(jù)

    def demo(num_list):
        print("函數(shù)內(nèi)部")
        num_list.append([1,2,3])
        print(num_list)
        print("函數(shù)內(nèi)部代碼完成")
    
    gl_list=[2,3,4]
    demo(gl_list)
    print(gl_list)

    運(yùn)行結(jié)果:

    函數(shù)內(nèi)部
    [2, 3, 4, [1, 2, 3]]
    函數(shù)內(nèi)部代碼完成
    [2, 3, 4, [1, 2, 3]]

    +=

    在python中,列表變量調(diào)用+=本質(zhì)上在執(zhí)行列表變量的extend方法,不會(huì)修改變量的引用

    def demo(num,num_lst):
        print("函數(shù)開始")
        num+=num
        num_lst+=num_lst
        print(num)
        print(num_lst)
        print("函數(shù)結(jié)束")
    gl_num=9
    gl_list=[1,2,3]
    demo(gl_num,gl_list)
    print(gl_num)
    print(gl_list)

    運(yùn)行結(jié)果:

    函數(shù)開始
    18
    [1, 2, 3, 1, 2, 3]
    函數(shù)結(jié)束
    9
    [1, 2, 3, 1, 2, 3]

    函數(shù)的參數(shù)

    缺省參數(shù)

    定義函數(shù)時(shí),可以給某個(gè)參數(shù)指定一個(gè)默認(rèn)值,具有默認(rèn)值的參數(shù)就叫做缺省參數(shù)

    調(diào)用函數(shù)時(shí),如果沒有傳入缺省參數(shù)的值,則在函數(shù)內(nèi)部使用定義函數(shù)時(shí)指定的參數(shù)默認(rèn)值

    (1)指定函數(shù)的缺省參數(shù)

    在參數(shù)后使用賦值語句,可以指定參數(shù)的缺省值

    def print_info(name,gender=True):
        gender_text="男生"
        if not gender:
            gender_text="女生"
        print("%s 是 %s"%(name,gender_text))

    (2) 提示

    缺省參數(shù),需要使用最常見的值作為默認(rèn)值

    如果一個(gè)參數(shù)的值不能確定,則不應(yīng)該設(shè)置默認(rèn)值,具體的數(shù)據(jù)在調(diào)用函數(shù)時(shí),由外界傳遞

    (3) 缺省參數(shù)的注意事項(xiàng)

    1.缺省參數(shù)的定義位置

    必須保證帶有默認(rèn)值的缺省參數(shù)在參數(shù)列表的末尾

    2.調(diào)用多個(gè)缺省參數(shù)的函數(shù)

    在調(diào)用函數(shù)時(shí),如果有多個(gè)缺省參數(shù),需要指定參數(shù)名,這樣解釋器才能夠知道參數(shù)的對(duì)應(yīng)關(guān)系

    多值參數(shù)

    有時(shí)候可能需要一個(gè)函數(shù)能夠處理的參數(shù)個(gè)數(shù)是不確定的,這個(gè)時(shí)候,就可以使用多值參數(shù)

    • python中有兩種多值參數(shù):

    參數(shù)名前增加一個(gè)* ,可以接收元組

    參數(shù)名前增加兩個(gè)*,可以接受字典

    • 一般在給多值參數(shù)命名時(shí),習(xí)慣使用以下兩個(gè)名字:

    *args----存放元組參數(shù)

    **kwargs—存放字典參數(shù)

    def demo(*args,**kwargs):
        print(args)
        print(kwargs)
    demo(1,2,3,4,name="test1",age=14)

    運(yùn)行結(jié)果:

    (1, 2, 3, 4)
    {'name': 'test1', 'age': 14}

    可以看到1,2,3,4被組成了一個(gè)元組
    name=“test1”,age=14,被組成了一個(gè)字典

    #計(jì)算任意個(gè)數(shù)之和
    def sum_args(*args):
        sum=0
        for n in args:
            sum+=n
        return sum
    result=sum_args(1,2,3,4,6)
    print(result)

    元組和字典的拆包

    在調(diào)用帶有多值參數(shù)的函數(shù)時(shí),如果希望:

    將一個(gè)元組變量,直接傳遞給args

    將一個(gè)字典變量,直接傳遞給kwargs

    就可以使用拆包,簡化參數(shù)的傳遞,拆包的方式是:

    在元組變量前,增加一個(gè)*

    在字典變量前,增加兩個(gè)**

    #如果不拆包,將gl_args,gl_kwargs組成一個(gè)元組
    def demo(*args,**kwargs):
        print(args)
        print(kwargs)
    
    gl_args=(1,2,3,4)
    gl_kwargs={"name":"test1","age":12}
    demo(gl_args,gl_kwargs)

    運(yùn)行結(jié)果:

    ((1, 2, 3, 4), {'name': 'test1', 'age': 12})
    {}

    如果不拆包,將gl_args,gl_kwargs組成一個(gè)元組,正確的傳遞方式應(yīng)該是:demo(1,2,3,4,name=“test”,“age”=12)

    但是實(shí)參是元組和字典,需要將元素一個(gè)一個(gè)拆開,所以需要使用拆包

    正確的使用方式:

    def demo(*args,**kwargs):
        print(args)
        print(kwargs)
    gl_args=(1,2,3,4)
    gl_kwargs={"name":"test1","age":12}
    demo(*gl_args,**gl_kwargs)

    運(yùn)行結(jié)果:

    (1, 2, 3, 4)
    {'name': 'test1', 'age': 12}

    關(guān)于“python的函數(shù)形參和返回值是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“python的函數(shù)形參和返回值是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI