1. 程式人生 > >python函式的引數

python函式的引數

1.單個引數

    場景:需要動態的調整函式中某一個處理資訊。則可以,以引數的形式接收到相關資料。

    定義:def 函式名(引數名稱):

                    函式體->函式體中,可以直接以變數的形式使用該引數。

    函式的呼叫:函式名(引數值)

    形參和實參的概念:上述定義中,“引數名稱”即為形參。在呼叫函式的時候,傳遞真實資料,即為實參。

案例程式碼:

def test(num):
    print(num * 1)
    print(num * 2)
    print(num * 3)

test(3)

2.多個引數

    場景:需要動態調整函式體中多個處理資訊時,則可以使用“逗號”做分割。接收多個引數。

    定義:def 函式名(引數名稱1, 引數名稱2)

                    函式體->函式體中,可以直接以變數的方式使用所有引數。

    呼叫:方式1->函式名(引數1, 引數2, 引數3,......)->形參和實參一一對應。

def mySum(x, y):
    print(x + y)

mySum(1, 2)

             方式2->函式名(引數名稱1=引數1, 引數名稱2=引數2, 引數名稱n=引數n,......)->可以指明形參名稱->稱為“關鍵字引數”

                                                                                                                                不需要嚴格按照順序

mySum(x=2, y=10)

3.不定長引數

    場景:如果函式體中,需要處理的資料,不確定長度,則可以以不定長引數的方式接收資料。

    方式1:def 函式名(*args):->形參前面加上*號,形參預設為是元組,使用的時候只加一層括號就好

                    函式體->函式體中,可以直接以元組變數的方式使用該引數。

    使用:函式名(引數1, 引數2, 引數3, ......)

def mySum(*t):
    print(t, type(t))
    sumi = 0
for v in t:
        sumi += v
    print(sumi)
mySum(1
, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    方式2:def 函式名(**dic): ->字典

                      函式體->函式體重中,可以直接以字典變數的方式使用該引數。

    使用:函式名稱(引數名稱1=引數1, 引數名稱2=引數2, ......)

def mySum(**kwargs):
    print(kwargs, type(kwargs))

mySum(name=18, age=2)

**引數的拆包:

    裝包->把傳遞的引數,包裝成一個集合,稱之為“裝包”

def test(*args):
    print(args)
test(1, 2, 3, 4, 6)

    拆包->把集合引數,再次分解成單獨的個體,稱之為“拆包”

def test(*args):
    print(*args)

test(1, 2, 3, 4, 6)

應用案例:

def mySum(a, b, c, d, e):
    print(a + b + c + d + e)

def test(*args):
    print(args)
    print(*args)
    mySum(args[0], args[1], args[2], args[3], args[4])
    mySum(*args)
test(1, 2, 3, 4, 6)

應用案例2:

def mySum(a, b):
    print(a)
    print(b)

def test(**kwargs):
    print(kwargs)
    # 使用兩個星星進行拆包操作
    # print(**kwargs)
mySum(**kwargs)
test(a=1, b=2)


4.預設引數:

    場景:當我們使用一個函式的時候,如果大多情況下,使用的某個資料是一個固定值,或屬於主功能之外的小功能實現。則可以使用預設值->這種引數,成為“預設引數”。

    定義:def 函式名(變數名1=預設值1, 變數名2=預設值2)

                    函式體->函式體中,即使外界沒有傳遞指定變數,也可以使用,只不過值給定的是預設值。

    使用:函式名(變數1, 變數2)->此處如果是預設引數,則可以不填寫。

def hit(somebody="豆豆"):
    print("我想打", somebody)

hit("陽光")
hit()

5.引數注意:

    值傳遞和引用傳遞:

        值傳遞->是指傳遞過來的,是一個數據的副本,修改副本對原件沒有任何影響。

        引用傳遞->是指傳遞過來的,是一個變數的地址,通過地址可以操作同一份原件。

    但是注意:

        在python中,你沒得選擇,只有引用傳遞(地址傳遞)

        但是,如果資料型別是可變型別,則可以改變原件。如果資料型別是不可變型別,則不可以改變原件。

def change(num):
    print(id(num))
    print(num)

b = 10
print(id(b))
change(b)