1. 程式人生 > >Python 動態傳參

Python 動態傳參

def chi(zhushi, cai, fushi, tang, tiandian):
    print(zhushi,cai,fushi,tang,tiandian)


chi("大碗大米飯", "火爆大頭菜", "把子肉", "西紅柿雞蛋湯", "烤地瓜")
chi("小碗大米飯", "火爆大頭菜") # 引數不夠

# 形參的順序(重點):
#   位置  *args  預設值  **kwargs
# 以後寫引數. 可以隨意的進行搭配, 但是, 順序不能串

# * 在形參位置. * 表示不定引數-接收的是位置引數
# 接收到的位置引數的動態傳參: 都是元組
def chi(*food): # 在形參這裡把傳遞過來的實參進行了聚合,聚合成了元組
    print(food)
#
chi("小米粥")
chi("小米粥", "鹹鴨蛋")
chi("爆米花", "鹹鴨蛋", "辣白菜")
chi("小米粥", "爆米花", "鹹鴨蛋", "蒜茄子")

def func(*args, a, b, c):
    print(a, b , c, args)

func(1,2,3,4,5,6,7, a=8, b=9,c=10)


# **在形參表示動態傳參-關鍵字引數
# 關鍵字動態傳參接收到的是字典
def func(**kwargs):  # 也是聚合. ** 聚合成字典
    print(kwargs)
#
# func(1,2,3,4,5,6,7) # 位置引數. 報錯
func(a=1, b=2, c=3, haha="呵呵", good="not bad")


# def func(**kwargs, gender="男"):
#     print(gender, kwargs)

# func(a=5,b=3,c=6, gender="女")


# # 無敵傳參
def func(*args, **kwargs): # 引數沒有限制. 隨便傳遞
    print(args)
    print(kwargs)

func(1,2,3,4, a=3,b=5)

# # 這裡是形參
# # * 聚合
def chi(*food):
    print(food)
#
lst = ["胡蘿蔔", "大白菜", "大蘿蔔", "草", "果凍"]
for el in lst:
    chi(el)
#
chi(lst[0], lst[1], lst[2], lst[3], lst[4])
#
# # 這裡是實參
# # * 打散
chi(*"你今天吃了些什麼") # * 打散. 把列表, 元組, 字串打散成位置引數進行傳遞
chi("胡蘿蔔", "大白菜", "大蘿蔔", "草", "果凍")

def chi(**food): # 聚合, 聚合成字典
    print(food)
#
dic = {"主食":'麵條', "副食":"土豆泥", "湯":"疙瘩湯"}
dic1 = {}
#
chi(**dic, 甜點="冰激凌") # 打散. 打散成關鍵字
chi(主食="麵條", 副食="土豆泥", 湯="疙瘩湯", 甜點="冰激凌")

# 形參:
#   *->元組, **->字典 表示聚合
# 實參:
#   *->列表,字串,元組, **->字典 表示打散