《编写高质量Python代码的59个有效方法》——第19条:用关键字参数来表达可选的行为

简介:

本节书摘来自华章社区《编写高质量Python代码的59个有效方法》一书中的第19条:用关键字参数来表达可选的行为,作者[美]布雷特·斯拉特金(Brett Slatkin),更多章节内容可以访问云栖社区“华章社区”公众号查看

第19条:用关键字参数来表达可选的行为
与其他编程语言一样,调用Python函数时,可以按位置传递参数。

Python函数中的所有位置参数,都可以按关键字传递。采用关键字形式来指定参数值时,我们会在表示函数调用操作的那一对圆括号内,以赋值的格式,把参数名称和参数值分别放在等号左右两侧。关键字参数的顺序不限,只要把函数所要求的全部位置参数都指定好即可。还可以混合使用关键字参数和位置参数来调用函数。下面这些调用,都是等效的:

位置参数必须出现在关键字参数之前。

每个参数只能指定一次。

灵活使用关键字参数,能带来三个重要的好处。
首先,以关键字参数来调用函数,能使读到这行代码的人更容易理解其含义。如果读到了remainder(20, 7)这样的调用代码,那么必须查看方法的实现代码,才能够明白这两个参数里面,究竟哪一个是被除数,哪一个是除数。若是改用关键字的形式来调用,则立刻就能根据number=20和divisor=7等写法来获知每个参数的含义。
关键字参数的第二个好处是,它可以在函数定义中提供默认值。在大部分情况下,函数调用者只需使用这些默认值就够了,若要开启某些附加功能,则可以指定相应的关键字参数。这样做可以消除重复代码,并使代码变得整洁。
例如,要计算液体流入容器的速率。如果容器比较大,那么可以根据两个时间点上的重量差及时间差来判断流率。

通常情况下,求出每秒钟流过的千克数就可以了。然而某些时候,可能想根据传感器上一次的读数,在更大的时间跨度上面估算流率,如以小时或天来估算。只需给函数添加一个参数,用来表示两种时间段的比例因子,即可提供这种行为。

这样写的缺点是,每次调用函数时,都要指定period参数,即便我们想计算最常见的每秒流率,也依然要把1传给period参数。

为了使函数调用语句能写得简单一些,我们可以给period参数定义默认值。

现在的period参数,就成了可选参数。

这种办法适用于比较简单的默认值。如果默认值比较复杂,这样写就不太好了,那种情况可以参考本书

相关文章
|
2月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
185 26
|
1月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
257 2
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
323 1
|
1月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
236 100
|
1月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
373 95
|
2月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
237 104
|
2月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
434 99
|
1月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
153 88
|
2月前
|
缓存 监控 算法
唯品会item_search - 按关键字搜索 VIP 商品接口深度分析及 Python 实现
唯品会item_search接口支持通过关键词、分类、价格等条件检索商品,广泛应用于电商数据分析、竞品监控与市场调研。结合Python可实现搜索、分析、可视化及数据导出,助力精准决策。
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
389 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡

推荐镜像

更多