【一】函数概述
函数是组织好的、实现单一功能或相关联功能的代码段。我们可以将函数视为一段有名字的代码,这类代码可以在需要的地方以“函数名()”的形式调用。
1.优点
将程序模块化,既减少了冗余代码,又让程序结构更为清晰
提高开发人员的编程效率
方便后期的维护与扩展
【二】定义函数
1.函数的模板
前面使用的print()函数和input()都是Python的内置函数,这些函数由Python定义。开发人员也可以根据自己的需求定义函数,Python中使用关键字def来定义函数
2.调用函数
函数在定义完成后不会立刻执行,直到被程序调用时才会执行。
【三】函数参数的传递(位置参数传递、关键字参数传递、默认参数传递、参数的打包与解包,混合传递)
将定义函数时设置的参数称为形式参数(简称为形参),将调用函数时传入的参数称为实际参数(简称为实参)。函数的参数传递是指将实际参数传递给形式参数的过程。
1.位置传参
2.关键字传参
3.默认参数的传参
4.打包
如果函数在定义时无法确定需要接收多少个数据,那么可以在定义函数时为形参添加“*”或“**”: “*” —— 接收以元组形式打包的多个值 “**”—— 接收以字典形式打包的多个值
------------*
-------------**
虽然函数中添加“*”或“**”的形参可以是符合命名规范的任意名称,但这里建议使用*args和**kwargs。 若函数没有接收到任何数据,参数*args和**kwargs为空,即它们为空元组或空字典
5.解包
实参是元组 → 可以使用“*”拆分成多个值 → 按位置参数传给形参 实参是字典 → 可以使用“**” 拆分成多个键值对 → 按关键字参数传给形参
6.混合传递
一.前面介绍的参数传递的方式在定义函数或调用函数时可以混合使用,但是需要遵循一定的规则,具体规则如下
1.优先按位置参数传递的方式。
2.然后按关键字参数传递的方式。
3.之后按默认参数传递的方式。
4.最后按打包传递的方式。
二.带有默认值的参数必须位于普通参数之后。 带有“*”标识的参数必须位于带有默认值的参数之后。 带有“**”标识的参数必须位于带有“*”标识的参数之后。
【四】函数的返回值
1.函数中的return语句会在函数结束时将数据返回给程序,同时让程序回到函数被调用的位置继续执行
2.如果函数使用return语句返回了多个值,那么这些值将被保存到元组中
【五】变量作用域
1.变量并非在程序的任意位置都可以被访问,其访问权限取决于变量定义的位置,其所处的有效范围称为变量的作用域。
根据作用域的不同,变量可以划分为局部变量和全局变量。
1/局部变量
函数内部定义的变量,只能在函数内部被使用 函数执行结束之后局部变量会被释放,此时无法再进行访问。
不同函数内部可以包含同名的局部变量,这些局部变量的关系类似于不同目录下同名文件的关系,它们相互独立,互不影响。
2/全局变量
1//全局变量在函数内部只能被访问,而无法直接修改
全局变量可以在整个程序的范围内起作用,它不会受到函数范围的影响