python函數四種參數類型的講解


 

"""
形參和實參:
形參:定義 函數時的 參數變量
實參:調用 函數時,使用的參數變量
參數傳遞的過程,就是 把實參的引用 傳遞給 形參 ,使用實參的值來執行函數體的過程。

在 Python 中,函數的實參/返回值都是是靠引用來傳遞來的
"""


def location(a=0, b=0):
    """
    按照參數位置,依次傳遞參數,這是最普通的方式
    """
    print(a + b)


location(3, 9)  # 位置實參,即調用函數時,按順序傳遞參數,3 傳給 a,9 傳給 b;得到正確結果12
location(b=3, a=9)  # 關鍵字實參,即調用函數時,按關鍵字傳遞參數,3 傳給 b,9 傳給 a;一旦第一個實參使用了關鍵字實參,那么后面的實參都須使用關鍵字實參;得到正確結果12
location(*(3, 9))  # 元組封包實參,需要在實參前加一個*號,表示對元組拆包后,按位置傳給形參;得到正確結果12
location(**{'a': 3, 'b': 9})  # 字典封包實參,需要在實參前加兩個*號(拆包兩次),表示對字典拆包后,按鍵值與形參名一一對應傳給形參;得到正確結果12
location(*{'a': 3, 'b': 9})  # 字典封包實參,因為只使用了一個*號,只拆包了一次,得到'a'和‘b’,'a'+‘b’返回的結果是'ab'
# 以上采用了實參拆包傳遞給形參的方式


def person(userid, name, age, sex='', *args, **kwargs):
    print(f'''
        身份證:{userid}
        姓名:{name}
        年紀:{age}
        性別:{sex}
        不定長參數信息:{args}
        字典參數信息:{kwargs}
    ''')


person('320102', '張三', 24, '', 'txt1.txt', 'txt2.txt', 'txt3.txt', 班級='2101班', 愛好='唱歌')
'''
以上采用了封包接收實參的方式,實參被*args和**kwargs各自收入了元組和字典中
得到:
        身份證:320102
        姓名:張三
        年紀:24
        性別:男
        不定長參數信息:('txt1.txt', 'txt2.txt', 'txt3.txt')
        字典參數信息:{'班級': '2101班', '愛好': '唱歌'}
'''
# person('320102', '張三', 24, sex='男', 'txt1.txt', 'txt2.txt', 'txt3.txt', 班級='2101班', 愛好='唱歌') 這種調用出錯,當有一個采用了關鍵字傳實參時,其后面都必須得是關鍵字傳實參數的方式,否則報錯。

 


免責聲明!

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



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