在Python中使用“*” 和“/” 让你的函数参数看起来更整洁

在这里插入图片描述

在Python中,我们可以通过位置参数或关键字参数向函数传递数据,这种灵活性让Python函数的使用变得非常方便。然而,这种方式也有一些局限性。例如,你可能希望某些参数仅限于使用位置来指定,而另一些参数则只能通过关键字来指定。此外,常见的一种需求是将带有默认值的参数放在没有默认值的参数之前,这样可以使参数看起来更加有序,使用起来也更加简单。在Python中,通过使用*/符号,可以实现这些特定的需求。

默认行为

众所周知,在Python中可以通过位置参数或关键字参数传递数据给函数。让我们看看下面这个简单的例子:

def output(a, b, c):  
    print(f'{a=}, {b=}, {c=}')  

只要关键参数放在位置参数后面,我们可以使用位置参数或关键字参数调用此函数:

在这里插入图片描述

这几种调用方式都有效,而且结果都一样。

使用 / 指定仅限位置参数

在函数定义中,放在 / 符号之前的参数必须作为位置参数传递。现在让我们使用 /更新 output() 函数:

def output_v2(a, /, b, c):  
    print(f'{a=}, {b=}, {c=}')  

在这个更新版本中,a 只能通过位置参数传递,而 bc 仍然可以通过位置参数和关键字参数传递:

在这里插入图片描述

如果参数 a 我们通过关键字参数传递,则会报类型错误:

在这里插入图片描述

使用 * 指定仅限关键字参数

在函数定义中,* 号后面的参数必须通过关键字参数传递。我们再次修改 output() 函数,将 / 修改为 *:

def output_v3(a, *, b, c):  
    print(f'{a=}, {b=}, {c=}')  

现在,a 可以通过位置参数或关键字参数传递,但bc 必须通过关键字参数传递:

在这里插入图片描述

如果 bc 通过位置参数传递的话,就会报类型错误:

在这里插入图片描述

上面的错误说明这个函数只有一个参数支持位置传递,即 * 号前面的 a

* 号的一个非常有用的功能是,它允许你在没有默认值的参数之前放置具有默认值的参数,使得参数看起来更有组织性或结构性。例如,我们可以给 b 一个默认值,仍然可以使用星号在 b 之后放置 c

def output_v4(a, *, b=2, c):  
    print(f'{a=}, {b=}, {c=}')  

这是 Python 中的有效语法,并且常用于具有复杂函数参数的第三方 Python 库。

现在 bc 都必须通过关键字参数传递,而且 b 具有默认值:

在这里插入图片描述

在函数定义中结合使用 */

我们可以结合 */ 来定义函数,其中一些参数是仅限位置传递,另一些则仅限关键字传递:

def output_v5(a, /, *, b=2, c):  
    print(f'{a=}, {b=}, {c=}')  

在这个案例中,a 是仅位置参数,而 bc 是仅关键字参数。

在这里插入图片描述

如果 a 使用关键字传递,bc 使用位置传递,则都会发生类型错误和语法错误:

在这里插入图片描述

总结

在这篇文章中,我们介绍了在函数定义中使用 */ 符号的方法,它们具有以下有趣的用途:

  • 使一些参数仅限位置参数,一些仅限关键字参数。

  • 将具有默认值的参数放在没有默认值的参数之前,使参数看起来更有组织且更容易使用。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

在这里插入图片描述

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

👉Python必备开发工具👈

在这里插入图片描述

👉Python学习视频合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方二维码免费领取

在这里插入图片描述

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值