Python函数详解(三)——函数的参数传递进阶
今天继续给大家介绍Python相关知识,本文主要内容是Python函数的参数传递进阶知识。
在上文Python函数详解(二)——函数的参数传递基础中,我们学习了Python函数中的必选参数和默认参数,今天,我们来介绍Python的其他类型的参数。
一、Python可变参数与关键字参数
除了必选参数和默认参数外,Python还支持可变参数。
可变参数常常用于函数的输入个数不确定的场景。例如,我们要写一个函数,该函数可以计算所有输入的参数的平均值。我们自然可以将输入确定为一个元组或者序列,但是在引入了可变参数后,我们也可以将该函数的参数设置为可变参数。
可变参数在函数定义时,前面要用*标识,这样表示我们可以向函数中传入多个参数,传入的参数会被当作元组类型来使用。Python的可变参数定义及调用示例如下所示:
Python还支持一种关键字参数,这种参数与之前参数的区别在于在定义时使用两个*标识,在使用时必须用关键字参数来命名。这种参数在传入时,采用字典的方式来表示,这种参数使用示例如下所示:
二、Python命名关键字参数
目前,我们已经学习了很多Python的参数了,除了上述几种参数外,为了更加方便我们学习Python的函数,我们学习最后一种特殊的参数(在有的文章中不认为这是一种参数,而是作为必选参数的特殊情况)——命名关键字参数。
我们来看下面的例子:
从上图中可以看出,如果我们在定义函数的时候,将一个必选参数放在了可变参数的后面,那么我们在函数调用的时候如果按照位置来给函数的各个参数赋值时,就会发生错误,因为Python解释器无法分辨哪个是可变参数,哪个是必选参数。
事实上,尽管Python允许这样定义函数,但是这样定义的函数,必须在给后面的必选参数赋值时使用参数名称来赋值,正确调用该函数的方法如下所示:
对于这种特殊的参数,在本文中我们将其称为命名关键字参数。
三、Python各种参数之间的组合与说明
我们已经讲解了很多Python函数中的参数种类了,那么当我们同时使用这些参数时,又有什么规则呢?总的来看,主要有以下4条规则:
1、默认参数必须在必选参数后面
2、在一个函数中最多只能有1个可变参数,最多只能有1个关键字参数
3、函数内部参数定义的规定顺序如下:必选参数、默认参数、可变参数、命名关键字参数以及关键字参数。
4、在函数调用参数赋值时,如果全部使用参数名称赋值,那么函数参数赋值的顺序任意。如果对部分参数使用名称赋值,部分使用位置赋值,那么有很大几率会出错。
其实,在真正编程开发时,很少会同时使用这么多参数,因为简直是“给自己找麻烦”,造成函数的可读性大大降低。但是,这不妨碍在一些考试以及面试中问到这么“无聊”的问题,因此本文最后的内容请有需要的同学参考学习!
最后,有关Python函数参数使用注意事项,请参考:Python函数详解(四)——Python函数参数使用注意事项。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
相关文章
- python redis基本概念简单操作
- Python中生成器和yield语句的用法详解
- 【Python包】模块和包导入详解(import)
- Python中第三方库Requests库的高级用法详解
- Python聚类算法之基本K均值实例详解
- Python编程之列表操作实例详解【创建、使用、更新、删除】
- Python操作SQLite数据库的方法详解
- Python函数详解(二)——函数的参数传递基础
- Python之pandas:pandas中to_csv()、read_csv()函数的index、index_col(不将索引列写入)参数详解之详细攻略
- Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略
- python读取word详解【from docx import Document】
- 编程进入高考,Scratch与Python初学者如何进行选择
- 〖Python接口自动化测试实战篇⑤〗- 接口自动化测试必备基础 - http协议
- 机器学习入门:7000字详解 Python 环境安装
- 68个Python内置函数详解,进阶必备!
- Python编程:FakeRequests一个对 requests 的包装类
- 小学生蓝桥杯Python闯关 | 纯质数
- python 遍历字典 提取指定key值value
- 安装 Ansible python 3.8 pip
- 手把手教你测试技能:python 3.X搭建robotframework框架
- Appium+python自动化(五)- 模拟器(超详解)
- 详解Python的装饰器
- Python垃圾回收机制详解
- 【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题三
- Python bs4解析库使用详解