python-函数传参
学习记录,与其他大佬内容或者理解有误,以大佬文章为准
'''
函数的传参
形参:
在定义函数的时候,定义的参数,叫形参(被没有赋予确定的值)
# 形参是用来接受实参传递的值的
1、必需参数(必备参数)
2、默认参数(缺省参数)
3、不定长参数(动态参数)
*args :接收0个或者多个位置参数
**kwargs :接收0个或者多个关键字参数
* 拆包和打包 *
拆包:
*:可以用来对元组、列表、字符串进行拆包(调用函数传递参数的时候)
**: 可以对字典进行拆包(调用函数传递参数的时候)
注意:1、字典拆包时,字典中的key值要与函数中形参一致
2、使用*对字典拆包会把字典的key值拆分出去
3、* 与 ** 拆包,只能在调用函数传递参数的时候使用
打包:
1、定义参数的时候在参数名前面加个 ‘*’ 或者 ‘**’,这个不定长参数就是打包
2、‘*’ 的不定长参数会把接收到的数据打包成一个元组
3、‘**’ 的不定长参数会把接收到的数据打包成一个字典
实参:
在调用函数的时候,传入进行的参数,叫着实参(调用函数的时候传入的值)
传值方式:
1、按照位置顺序进行传递,这种传参的形式叫做位置参数
2、通过参数名指定传参进行传递,这种传参方式叫做关键字传参(通过参数名指定传参)
'''
函数的传参
def fun1(a, b): # a, b 形参
return a + b
# 位置传参
re = fun1(200, 200) # 100, 200 实参
print(re)
# 关键字传参
re2 = fun1(b=121, a=100)
print(re2)
必需参数(必备参数)
# 什么叫必备参数?什么叫他妈的必备参数?必备参数就是你喵的不在函数里定义,就没办法调用函数的时候传递实参,所以这个函数的形参就是必备参数
# def fun2():
# d = a+b+c
# print(d)
# fun2(1,2,3) # fun2() takes 0 positional arguments but 3 were given
默认参数(缺省参数)
# 默认参数,调用时没有传递实参,就会以默认的数进行运算
def fun2(a, b, c=10086):
d = a+b+c
print(d)
fun2(1, 2) # 10089
*args,**kwargs不定长传参
def fun3(a, b, *args,**kwargs):
s = a + b
print(s, args, kwargs)
fun3(1, 2, 3, 4, 5, 6, 7, c=123, d='456')
* 与 ** 拆包
普通传递方法
def fun4(a, b, c):
print('a:{}'.format(a))
print('b:{}'.format(b))
print('c:{}'.format(c))
lis4 = [1, 2, 3]
tuple_4 = (4, 5, 6)
str = '789'
dict_4 = {'a': 12, 'b': 34, 'c': 56}
# 普通传递方法
fun4(lis4[0], lis4[1], lis4[2])
使用拆包传递
print('-----------------------')
fun4(*lis4)
print('-----------------------')
fun4(*tuple_4)
print('-----------------------')
fun4(*str)
print('-----------------------')
fun4(*dict_4) # 使用*对字典拆包会把字典的key值拆分出去(a:a、b:b、c:c)
print('-----------------------')
** 对字典进行拆包
fun4(**dict_4) # 字典拆包时,字典中的key值要与函数中形参一致,
print('-----------------------')