引言
python 中
有两个人人都耳熟能详的运算符:* 和 /
但你知道它们在定义函数时有什么作用吗?
不知道的话就继续往下看吧!
* 的作用:
先看一个简单的实例函数:
def fn(a, b, c, d):
return a, b, c, d
函数 fn 接收4个参数,并打包成元组返回
例如
# 省略 fn 的定义
a = fn(1, 2, 3, 4)
print(a)
# 输出 (1, 2, 3, 4)
但如果你想让用户只能通过关键字实参传入 c 和 d 怎么办?
此时,你可以在形参 c 前添一个 *
def fn(a, b, *, c, d):
return a, b, c, d
形参中的 * 表示它后面的形参都只能过关键字来传入
不管其有没有默认值
此时,若想调用 fn 就必须这样写
a = fn(1, 2, c=3, d=4)
如果还按前一种方法调用,会报错意外实参和形参 c 未填入
当然,形参 a, b 不受任何影响
/ 的作用:
还是 fn 函数
def fn(a, b, c, d):
return a, b, c, d
上一个示例中
a 和 b 也可以通过关键字传入
a = fn(a=1, b=2, c=3, d=4)
那如果你想禁止用户通过关键字传入 a 和 b 呢?
很简单
在 b 后面加一个 / 就好了
就像这样:
def fn(a, b, /, c, d):
return a, b, c, d
形参中的 / 表示它前面的形参都只能用位置实参来传入
不能写成 a = value
此时,fn 就得这样调用
a = fn(1, 2, c=3, d=4)
两者一起:
上一个示例中
fn 形参 c 前面没有 *
所以也可以这样调用
a = fn(1, 2, 3, 4)
如果你想让 a, b 只能用位置实参来传入,而 c, d 只能通过关键字实参传入
就要这样写:
def fn(a, b, /, *, c, d):
return a, b, c, d
现在
fn 就只可以这样调用了:
a = fn(1, 2, c=3, d=4)
否则报错
结尾
那么今天的python就分享到这
本文只面向初学者
作者是一名12岁的小学生
所以不喜勿喷
如有错误还望指出!
你们的支持是我的最大动力!
还想了解什么就发在评论区吧!
下一篇博客见!