形参和实参

区分 默认形参 和 关键字实参

函数的定义处 (默认形参在函数的定义处)

def lol_gameteam_python30(top="魏富强",middle="李天照",bottom="尉翼麟",jungle="黄俊",support="神秘男孩"):
	print("上单选手:{who}".format(who=top))
	print("中单选手:{who}".format(who=middle))
	print("下路选手:{who}".format(who=bottom))
	print("打野选手:{who}".format(who=jungle))
	print("辅助选手:{who}".format(who=support))

函数的调用处 (关键字实参在函数的调用处)

lol_gameteam_python30()
lol_gameteam_python30(top="陈宁波",middle="宋青林",bottom="刘思敏",jungle="王振")

收集参数

(1) 普通收集参数 :

在参数的前面加上一个*,代表的是普通收集参数.
作用:收集多余的没人要的普通实参,构成一个元组
def func(*args):
	pass
args => arguments(参数)
def func(a,b,c,*args):
	print(a,b,c)
	print(args)

func(1,2,3,4,5,6,7,8)
计算任意个数的累加和
def mysum(*args):
	total = 0
	for i in args:
		total += i
	print(total)
mysum(1,2,3,4,5,6,7,8,9,1111)

(2) 关键字收集参数

在参数的前面加上两个*,代表的是关键字收集参数
作用:收集多余的没人要的关键字实参,构成一个字典
def func(**kwargs):
		pass
		
kwargs = keyword arguments
	
def func(a=1,b=2,c=3,**kwargs):
	print(a,b,c)
	print(kwargs)
	
# func(a=4,b=5,c=6,f=1,z=2,x=3)
# func(4,5,6,f=1,z=2,x=3)
任意字符串的拼接
班长:张恒
班花:刘思敏
吃瓜群众:黄俊,王振...
def func(**kwargs):
	strvar = ""
	strvar2 = ""
	dic = {"monitor":"班长","class_flower":"班花"}
	# {'monitor': '张恒', 'class_flower': '刘思敏', 'hj': '黄俊', 'wz': '王振'}
	print(kwargs)
	for k,v in kwargs.items():
		# print(k,v)
		# 判断键在字典中,在进行获取
		if k in dic:
			strvar += dic[k] + ":" + v	+ "\n"		
		# 如果不在,那就是吃瓜群众
		else:
			strvar2 += v + " , "
	print(strvar.strip())
	print("吃瓜群众:" + strvar2.strip(" , ") + "......")
func(monitor="张恒",class_flower="刘思敏",hj="黄俊",wz="王振")

命名关键字参数

def func(参数1,参数2,*,参数3)
	(1)*号后面定义的参数是命名关键字参数
def func(*args,参数,**kwargs)
	(2) 在普通收集 和关键字收集参数之间的,是命名关键字参数
如果是命名关键字参数,必须使用关键字实参的形式调用;

(1) 定义方式一

def func(a,b,*,c):
	print(a,b)
	print(c)
# 函数的调用处
func(1,2,c=3)

(2) 定义方式二

def func(*args,dd,**kwargs):
	print(args)
	print(kwargs)
	print(dd)
func(1,2,3,4,4,5,6,a=1,b=2,c=3,dd="abc")

关于 * 和 ** 的使用方法

在函数的定义处, *** 用来接收数据,*打包成一个元组,**打包成个字典
在函数的调用处, *** 用来解包数据,*一般应用在列表或元组,**一般用在字典
* 一个星调用处的语法
def func(a,b,*,c,d):
	print(a,b)
	print(c,d)
	
# 函数的调用处
func(1,2,c=3,d=4)
lst = [1,2]
*lst <=> 把列表里面的每一个元素都单独拿出来,当成参数赋值给func进行调用
func(*lst,c=3,d=4)
** 二个星调用处的语法
# func(1,2,c=3,d=4)
**dic <=> 把字典里面的键值对拿出来,转化成关键字实参的形式,当成参数赋值给func进行调用;
dic = {"c":3,"d":4}
func(1,2,**dic)

综合

定义处的*号用法 和 调用处的*号用法 是一对相反操作
一个是用来打包,一个是用来解包
优点:控制了参数的个数.
func(*lst,**dic)

参数的顺序

形参顺序
普通形参 -> 默认形参 -> 普通收集参数 -> 命名关键字参数 -> 关键字收集参数

收集所有实参

def func(*args,**kwargs):
	pass

参数练习

def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

def f2(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
 以上两个函数 打印结果
(一)
f1(1, 2) # a =1 b=2 c=0 args=() kw={}
f1(1, 2, c=3) # a=1 b=2 c=3 args=() kw={}
f1(1, 2, 3, 'a', 'b') # a=1 b=2 c=3 args=(a,b) kw={}
f1(1, 2, 3, 'a', 'b', x=99) # a=1 b=2,c=3 args=(a,b) kw={x:99}
f2(1, 2, d=99, ext=None) # a=1,b=2,c=0 ,d=99,{ext:None}
(二)
args = (1, 2, 3, 4)
kw = {'d': 99, 'x': '#'}
f1(*args, **kw) # a=1,b=2,c=3,args=(4,) kw={d:99,x:#}
(三)
myargs = (1, 2, 3)
mykw = {'d': 88, 'x': '#'}
f2(1,2,3,d=88,x=#)
f2(*myargs, **mykw) # a = 1,b=2,c=3,d=88 kw={x:#}
(四)
def f1(a, b, c=0, *args,d,**kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
    print(d)

f1(1,2,3, 'a', 'b',d=67, x=99,y=77)
a =1,b=2,c=3 args=(a,b) kw={x:99,y:77} d=67
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值