python含有/,*,**参数的函数

1. Python 函数中参数前面一个和两个星号(**)的区别

例如

def foo(param1, *param2):
def bar(param1, **param2):

这两种用法其实都是用来将任意个数的参数导入到 Python 函数中。
看代码

# 带*的函数
def myFun2(a, *b):
    print(a, b)

# 带**的函数
def myFun3(a, **b):
    print(a, b)

# 结合使用*和**
def merge(a,b,*c,**d):
    print(a,b,c,d)

myFun2(1, 2, 3, 4)
myFun3(1, age=2, hieght=3) # 注意这里的key不需要带引号,而其key不能是数字
merge(9,8,5,5,5,name="bob",address="china")

输出:
1 (2, 3, 4)
1 {'age': 2, 'hieght': 3}
9 8 (5, 5, 5) {'name': 'bob', 'address': 'china'}

所以得出结论:*args是以元组的形式传入。 **args是以字典的形式传入

2. Python函数中有/和*的形参

例如:
在这里插入图片描述
/和*占一个参数位置
代码解释:

def f1(a,b,/):
    print(a,b)

def f2(a,*,b,c):
    print(a,b,c)
f1(19,9) # (a=19,b=9)不行,会报错
f2(1,b=1,c=1) # 只能用这种格式

运行结果:
19 9
1 1 1

结论:
首先要区分“位置参数”和“关键字参数”,这两种参数的区别
位置参数:穿的参数必须按函数里面写的位置先后,一个一个传,例如:fun(1)
关键字参数:可以不按顺序,但是实参前面必须带有形参,例如:fun(age=1)

  • ’/‘ 之前的参数都是 positional-only 参数,不能 写出参数的 name
  • ’*‘ 之后的参数都是 keyword-only 参数,必须 写出参数的 name

总结
知道“位置参数”和“关键字参数”的区别后
如果你希望调用者使用函数时一定 不能 使用关键字参数传参,那么只需要把这些参数放在/前即可;
如果你希望调用者使用函数时一定要使用某些参数,且必须为关键字参数传参,那么只需要把这些参数放在*后面即可。

不按规则穿参就会报错

3. 默认参数

这个就比较简单了

# 默认值函数
def moren(a=0,b=0):
    print(a,b)
moren()
输出结果:
0,0  

如有不对,欢迎指正

参考博客:
http://blog.itpub.net/69955379/viewspace-2694268/
https://www.zhihu.com/question/287097169

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值