[Python] [2] * 与 / 的另类用法

引言

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岁的小学生

所以不喜勿喷

如有错误还望指出!

你们的支持是我的最大动力!

还想了解什么就发在评论区吧!

下一篇博客见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值