python函式的入參和傳參

穿過稜鏡的光發表於2020-12-18

https://www.bilibili.com/video/BV1k7411W78H

# 1.位置引數
def calc(a, b, c):
    print(a + b * c)


calc(1, 2, 3)


# 2.關鍵字引數,如果使用上面的位置引數進行傳值,一個函式入參定義了十多個,位置很容易搞混
# 使用關鍵詞進行傳輸,就是傳入的標識 = 傳入的資料
def calc(a, b, c):
    print(a + b * c)


calc(b=1, a=2, c=3)


# 3.關鍵字引數和位置引數混搭,必須 先位置,後關鍵字
def sum(a, b, c):
    print(a + b * c)


sum(1, b=2, c=3)


# 4.函式入參,強制關鍵字引數傳值
# 函式入參前面加入 * 號標識,強制呼叫函式時入參必須為關鍵字引數傳值
def add(*, a, b, c):
    print(a + b + c)


add(b=1, a=2, c=3)


# 5.預設引數
# 預設引數在函式定義時定義好,呼叫函式時,可以傳,可以不傳
def addm(a, b, c=0):
    print(a + b + c)


addm(1, 2)
addm(1, 2, 3)


# 6.可變引數(位置),先固定引數,再可變引數
# 可變引數(位置),加入一個星號 *,進行標識
def sayhello(msg, *names):
    print('hello', names, msg)
    # 在函式內部使用時,可變引數前加入星號,表示開包
    print('hello', *names, msg)


# 呼叫的時候,name可以傳多個數值,傳入之後,會被合併為一個元祖(鍵值對)
sayhello('新年好', '麗華', '湯姆')


# 7.可變引數(關鍵詞),先固定引數,再可變引數
# 如果在函式定義時,引數加入兩個星號,代表可變關鍵詞引數
def hello(msg, **names):
    # 可變引數(關鍵詞)在使用的時候,需要使用 元祖 鍵值對的方式輸出數值
    print('老大是:', names['boss'], msg)
    print('老二是:', names['boss2'], msg)

# 函式呼叫時,給可變引數(關鍵詞)傳值的時候,需要用鍵值對傳值
hello('新年好', boss='大老闆', boss2='二老闆', boss3='三老闆')

#10函式呼叫 -開包列表 和 元祖 ,加入一個星號 *,標識開啟一個列表和元祖
# 可變引數(位置),加入一個星號 *,進行標識
def sayhai(msg = '預設的資訊', *names):
    print('hello', names, msg)
    # 在函式內部使用時,可變引數前加入星號,表示開包
    print('hello', *names, msg)

# 呼叫的時候,name可以傳多個數值,傳入之後,會被合併為一個元祖(鍵值對)
data = ('新年好', '麗華', '湯姆')
data1 = ['你好',]
sayhai('這是msg',*data)
sayhai(*data1)

#11.函式呼叫 -開包 字典 ,加入一個星號 **,標識開啟一個字典

# 如果在函式定義時,引數加入兩個星號,代表可變關鍵詞引數
def hello(msg, **names):
    # 可變引數(關鍵詞)在使用的時候,需要使用 元祖 鍵值對的方式輸出數值
    print('老大是:', names['boss'], msg)
    print('老二是:', names['boss2'], msg)

# 函式呼叫時,給可變引數(關鍵詞)傳值的時候,需要用鍵值對傳值
data = {'boss':'大老闆', 'boss2':'二老闆', 'boss3':'三老闆'}
#函式呼叫 -開包 字典 ,加入一個星號 **,標識開啟一個字典
hello('這裡是msg',**data)

相關文章