大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

在教程主线第四期和第五期,我们学习了函数的使用和定义方法。函数的参数就像一个占坑位的东西,我们只要按照顺序往里填相应的数据就可以了。但我们目前是按照顺序来确定哪个数据填到哪个坑位的,这种情况下一两个参数还好,要是五六个七八个参数就乱套了,谁在前谁在后还得花功夫去仔细比对。写好的函数如果再给别人使用的话还得跟人家介绍一下顺序是怎么排的:

第一个坑由工程师来蹲,第二个坑由部门经理来蹲,第三个坑由总经理来蹲,第四个坑由董事长来蹲,第五个坑由扫厕所的来蹲……

这下就导致使用函数的学习成本变得很高,可读性也变差。

我们希望的是每个坑位都有自己的名字,这样大家来了就能对号入坑,不用再排顺序了。这样合情合理的要求其实Python早就想到了,因此有了关键字参数这一功能。

我们依然拿把大象装冰箱举例,这次我们写一个函数,把不一定是大象的什么玩意装进不一定是冰箱的什么玩意:

如果我们这样调用函数,结果会怎样,如果两个参数交换位置又会怎样?大家这里思考一下,就不再运行了。

而关键字参数是怎么用的呢?其实很简单,在调用函数时将实参赋给相应的形参名:

可以看到,在这样操作之后,形参名就被语法高亮小秘书涂成了橙红色,标明了这是关键字参数的用法,那我们来运行一下:

没有什么问题,那我们交换一下参数的顺序:

结果是一样的。

也就是说,使用了关键字参数,我们就可以根据函数里定义的形参的名字来安排参数,而不用去刻意追求参数的顺序了。

但是,关键字参数的功能还不仅仅这一个。

比如,对于这个函数我们通常情况下希望把什么玩意装进冰箱里,只有很少的情况需要把它装进别的容器。但现在我们每装一个东西都要指定一下容器是冰箱,这又不符合我们懒的要求了。这时候,我们使用关键字函数就可以为一个参数指定默认值。

指定默认值要在定义函数时就进行指定:

直接在def语句中给形参指定为默认值。在调用函数时如果我们取默认值的话,相应的参数位就可以不填实参了:

这次我们不取默认值:

结果正如我们的预期。

而虽然我们使用了关键字参数去指定了默认值,我们依然可以使用之前不用关键字参数,只按照顺序的方式去调用函数:

但这时候就要注意了,如果我们在第一个参数位就指定默认值,而后边的不指定默认值,那我少输入的哪个参数会被默认掉?

程序还没开始运行,PyCharm老师就已经画红色的波浪线给我们提示错误了,我们看一下:

non-default parameter follows default parameter, 意思是没有默认值的参数跟在了有默认值的参数的后边。可见为了杜绝默认值默认了谁的问题,Python直接禁止了这种情况。所以需要指定默认值的参数一律要放到后边,没指定默认值的一律放到前边。

这一期我们学习了关键字参数的使用方法和规则,有了这一课的基础,相信大家能够更好地上手操作。如果这篇文章对你有所帮助,希望能帮室长点个赞和在看,你的鼓励是室长进步的动力!

坑太多了都不知道蹲哪个了|关键字参数和默认值相关推荐

  1. 自动装配——@Autowired 构造器,参数,方法,属性都是从容器中获取参数组件的值||自定义组件想要使用Spring容器底层的一些组件 ApplicationContext,BeanFactory

    @Autowired:构造器,参数,方法,属性:都是从容器中获取参数组件的值 * 1).[标注在方法位置]:@Bean+方法参数:参数从容器中获取;默认不写@Autowired效果是一样的:都能自动装 ...

  2. Python函数默认值参数的2个坑

    在定义函数时,Python支持默认值参数,在定义函数时可以为形参设置默认值.在调用带有默认值参数的函数时,可以不用为设置了默认值的形参进行传值,此时函数将会直接使用函数定义时设置的默认值,当然也可以通 ...

  3. 苹果手机计算机的使用技巧,iPhone自带的计算器也太好用了吧!隐藏的小技巧很多人都不知道!...

    原标题:iPhone自带的计算器也太好用了吧!隐藏的小技巧很多人都不知道! 用iPhone手机的朋友,你用过iPhone自带的计算器吗? 教授身边有很多苹果用户觉得iPhone手机上自带的计算器APP ...

  4. 我的天,你工作5年了,连Java agent都不知道...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 # 引言 在本篇文章中,我会通过几个简单的程序来说明 agent ...

  5. 7个使用PyTorch的技巧,含在线代码示例!网友:我连第一个都不知道?!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 大家在使 ...

  6. 两边双虚线是什么意思_单黄线和双黄线有什么不同?很多人都记不对,被扣分都不知道...

    现在的社会发展越来越好,经济也有了很大的提升,人们也开始提升自己的生活质量.买车就成了很多人的首选,因为买车可以很大的方便人们的生活.不过即使买车,也并不是说就可以随随便便的开车上路的.现在路上的车辆 ...

  7. datetimepicker不可以选择当天之前_专访吴京:网上《战狼3》的消息我都不知道,大家可以选择不信...

    搜狐娱乐讯 (哈麦/文)在2017爆火的<战狼2>之后,吴京演了<祖宗十九代><流浪地球><老师·好><银河补习班><攀登者>& ...

  8. iphone android传照片大小,iPhone竟然可以传文件到安卓机?99%的人都不知道

    原标题:iPhone竟然可以传文件到安卓机?99%的人都不知道 iPhone换了安卓手机, 旧iPhone手机上的数据该怎么办? 是全部按delete键(X)? 忘了一切,让数据随风? 还是一个个从旧 ...

  9. pycharm 设置虚拟工作空间_七、连Pycharm都不知道怎么用,学什么Python

    「@Author : Runsen」 我决定把去年写的Python文章整理一个专栏,垃圾的就直接删除,将多篇博文整理成一篇. 工欲善其事必先利其器,Pycharm 是最受欢迎的Python开发工具,它 ...

  10. 穷养儿富养女 很多人都不知道这句话的真正含义

    穷养儿富养女  很多人都不知道穷养儿,富养女的真正含义.认为男孩要严格,少给钱花,女孩要给买好的东西多给钱花.有儿女的看看下面的文章. 教你如何穷养儿子,富养女儿 穷养儿子,是对男孩一生的投资;富养女 ...

最新文章

  1. Linux下,各种解压缩命令集合
  2. Java综合知识总结_基础篇
  3. c++函数内部可以返回函数内部定义的指针 但是不能返回函数内部定义的数组...
  4. Android 自定义动画 LoadingView
  5. C# 8.0的三个令人兴奋的新特性 1
  6. oracle oic配置,Oracle数据库 client配置
  7. 卷积神经网络算法python实现_自动色彩均衡(ACE)快速算法python实现
  8. 案例:监听域对象的生命周期
  9. Kinect+OpenNI学习笔记之13(Kinect驱动类,OpenCV显示类和手部预分割类的设计)
  10. c++多线程——基于锁和条件变量的前程安全队列
  11. websocket传输数据大小限制_websocket 发送字符串数据上限是多少
  12. 使用Microsoft Lookback网卡解决了断网情况下 Virtual Server 虚机和主机的网络连接
  13. Java的历史和学习Java需要准备的工具
  14. iOS 消息发送与转发详解
  15. ie和chrome浏览器下onproperty事件oninput onpropertychange的相应和相应属性的获取
  16. APP兼容性测试如何测试?
  17. mmd动作:Bad End Night
  18. 视频CMS是什么?你为什么需要它?
  19. Wi-Fi 6 提升了哪些方面?
  20. 计算机存在其他连接设备错误,USB设备连接电脑失败怎么办

热门文章

  1. 贝叶斯判别matlab,matlab – 朴素贝叶斯分类器和判别分析的准确性是有道理的
  2. ssm在线点歌系统+vue
  3. python局域网下载文件
  4. Mountain Lion的变化背后
  5. java 做成安装 服务_java服务安装(三):使用appassembler
  6. 28岁的女生0基础的情况下该怎么转行做软件测试
  7. 【UML系统建模】- 线图分析
  8. 多源数据汇聚(数据上报、数据集中)
  9. 智慧停车:路边占道停车建设方案(图文)
  10. tail 上下_世界上最轻便,最容易折叠的美式拖挂房车Tailma