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

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

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

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

每个参数只能指定一次。

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

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

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

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

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

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

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

  1. 《编写高质量Python代码的59个有效方法》——第10条:尽量用enumerate取代range

    本节书摘来自华章社区<编写高质量Python代码的59个有效方法>一书中的第10条:尽量用enumerate取代range,作者[美]布雷特·斯拉特金(Brett Slatkin),更多章 ...

  2. 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...

  3. python中如何编写代码输入多个数据并把它们放在一个列表中去_编写高质量Python代码的59个有效方法,你用过几个...

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...

  4. python编写代码避免内存增加_读书笔记(6): 编写高质量python代码的59个有效方法-完结...

    前言 <编写高质量python代码的59个有效方法>这本书分类逐条地介绍了编写python代码的有效思路和方法,对理解python和提高编程效率有一定的帮助.本笔记简要整理其中的重要方法. ...

  5. 《Effective Python 编写高质量Python代码的59个有效方法》读书笔记

    具体的59条 第 1 章 用 Pythonic 方式来思考 1 第 1 条:确认自己所用的 Python 版本 1 第 2 条:遵循 PEP 8 风格指南 3 第 3 条:了解 bytes. str ...

  6. Python -- Effective Python:编写高质量Python代码的59个有效方法

    第 1 章 用 Pythonic 方式来思考 第 1 条:确认自己所用的 Python 版本 python --version import sys print(sys.version_info) p ...

  7. effective python编写高质量Python代码的59个有效方法 pdf下载

    用Python编写程序,是相当容易的,所以这门语言非常流行.但若想掌握Python所特有的优势.魅力和表达能力,则相当困难,而且语言中还有很多隐藏的陷阱,容易令开发者犯错.本书使用了59个主题讲述了p ...

  8. 编写python高质量python代码的59个有效方法

    第1条:确认自己的python版本 第2条:遵循PEP8的风格 1.空格 对于 占据多行的长表达式来说, 除了首行之外的其余各行都应该在通常的缩进级别上再加4个空格. 每行字符数不应该超过79. 2. ...

  9. python代码续航的方法_编写python高质量python代码的59个有效方法

    第1条:确认自己的python版本 第2条:遵循PEP8的风格 1.空格 对于 占据多行的长表达式来说, 除了首行之外的其余各行都应该在通常的缩进级别上再加4个空格. 每行字符数不应该超过79. 2. ...

最新文章

  1. 【直播回放】60分钟讲解深度学习中的数据爬虫和标注
  2. 用到的oracle sql语句-001
  3. yiicms php版本,yiicms
  4. 2011年全国软件大赛模拟题及参考答案(Java本科组)
  5. pygame的一个小问题,未解决
  6. spring之:XmlWebApplicationContext作为Spring Web应用的IoC容器,实例化和加载Bean的过程...
  7. 骁龙870对比天玑1200,到底谁更优秀?
  8. 做图软件matlab,Matlab 生物节律作图软件
  9. 第四次作业(胡明浩)
  10. R语言ggplot2绘图
  11. FPGA基础知识21(PL控制PS端DDR的设计)
  12. css扁平化设计,从一个web前端开发者的角度来看扁平化设计的5大优点
  13. 右键一直转圈圈(右键桌面和右键打开文件夹)的两种解决办法小总结
  14. 2022-2027年中国分散染料行业市场全景评估及发展战略规划报告
  15. 2019年深度学习自然语言处理最新十大发展趋势
  16. 352记--扬哥本纪
  17. ffmpeg给视频添加时间水印
  18. easyui ajax方式与后台servlet交互原理
  19. red hat 系统下载
  20. RVB2601开发板试用3——以太网通讯测试

热门文章

  1. L1-013. 计算阶乘和-PAT团体程序设计天梯赛GPLT
  2. L1-007. 念数字-PAT团体程序设计天梯赛GPLT
  3. L1-009. N个数求和-PAT团体程序设计天梯赛GPLT
  4. 1020. 月饼 (25)-PAT乙级真题
  5. React.js组件化开发第一步(框架搭建)
  6. Python存储和读取数据
  7. 2019届[月考01-03]高三理科数学试题参考答案
  8. Cartographer系列之三——ROS中的安装
  9. oracle之完整性约束
  10. ArcGIS 9在WIN XP 和 WIN 2003 系统下安装部分动态库不能注册