import random# 一个星号的收集参数将保存为一个元组,# 这种收集参数只收集位置参数,不会收集关键字参数def func3(*params):print(params)func3(1, 2, 3) # (1, 2, 3)# 收集参数不是必须放在最后,# 但如果不是在最后,那么在调用函数时必须为收集参数之后的参数使用关键字参数def func4(*params, a):print(params)func4(1, 2, 3, a=2) # (1, 2, 3)def roll_dice1(*dice):# 当不传入参数时,dice 为一个空元组,空元组判断为 falseif dice:roll = random.randint(1, dice[0])return (roll,) + roll_dice1(*dice[1:]) # 切片,元组解包,元组加法else:return ()roll_dice1()# 两个星号的收集参数将保存为一个字典,# 这种收集参数只收集关键字参数def func5(**kwargs):print(kwargs)func5(a=2, b=3) # {'b': 3, 'a': 2}# 可以同时使用一个星号和两个星号的收集参数,但两个星号的收集参数必须在最后def func6(a, *args, b, **kw):print(args)print(kw)func6(1, 2, c=4, b=3) # (2,) {'c': 4}def func7(a, b, c):print(a + b + c)a = (2, 3)# 在实参中,一个星号用于实现对元组或数列的分配,即将元组或数列分解为位置参数func7(1, *a) # 6# func(*a,1) #异常,分配参数必须位于最后a = {"b": 2, "c": 3}# 在实参中,两个星号用于实现对字典的分配,即将字典分解为关键字参数func7(1, **a) # 6# 这里使用了一个未命名的收集参数,这直接导致该函数不支持位置参数# 所以这该函数只支持关键字参数def roll_dice2(*, sides=6, dice=1):return tuple(random.randint(1, sides) for _ in range(dice))dice_cup = roll_dice2(sides=6, dice=3)print(dice_cup)# 在参数列表中放置斜线(/)即可将斜线前面的所有参数指定为仅位置参数def roll_dice3(dice=1, /, sides=6):return tuple(random.randint(1, sides) for _ in range(dice))# dice 只能通过位置参数传入,而 sides 则可以是位置参数或关键字参数dice_cup = roll_dice3(3, sides=6)print(dice_cup)# 同时包含仅位置参数和仅关键字参数def func(pos_only=None, /, pos_or_keyword=None, *, keyword_only=None):print(pos_only)print(pos_or_keyword)print(keyword_only)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。