文章目录
八、函数(一)
1、函数简介
- 定义:函数是一个对象,能够保存一段代码,并在你想要使用时,可以对它重复调用
- 语法:
def 函数名 (形参1,形参2,……) :
代码块
![](https://img-blog.csdnimg.cn/20201113145742315.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nqempo,size_16,color_FFFFFF,t_70#pic_center)
- (函数名必须符合规范,不能以数字开头,可以包括字母、数字、下划线)
2、函数的参数
2.1 函数的形参和实参
- 形参和实参:形参(形式参数),相当于在函数内部声明了变量,但是并不是赋值;实参(实际参数),指定了形参,调用函数时传递的就是实参,实参会赋值给对应的形参,所以有几个形参调用函数时就要传递几个实参
2.2 函数的传递方式
- 定义形参默认值:定义形参时,可以为形参指定默认值;指定默认值后,若用户没有传递实参,则按默认值运算,若用户传递了实参,则按照实参来运行
- 位置传参:将对应位置的实参赋值给对应位置的形参
- 关键字传参:根据参数名传递实参,可以不按照形参定义的顺序去传递
- 混合传参:使用位置传参和关键字传参混合传参,但要注意不能将关键字传参放在位置传参前面
2.3 不定长参数
- *传参定义:定义函数时,在形参前加上*,则这个形参可以获取到对应位置及之后的所有实参,并保存到一个元组中
o 带*的形参只能有一个,也可以和关键字传参一起使用
o 带*的形参不一定要放在最后,但在后面的形参要用关键字传参
o 带*的形参只能用于位置传参
- **传参定义:**传参可以接受其他关键字传参,它会将这些传参保存到一个字典中,字典中的key就是参数的关键字,字典中的value就是实参
o **传参只能放在所有传参最后面,且只能有一个
3、函数的返回值和定义域
3.1函数的返回值
- 定义:函数返回值就是函数运行完之后返回的结果
- 通过return来制定函数的返回值,且return后面可以跟任何对象,甚至另一个函数
o 可以直接使用函数的返回值,也可以拿参数来接受
o 若return后没写对象,则返回None
o 在函数中一旦执行了return,函数就停止,后面的代码不会再执行
3.2 函数的作用域
- 定义:函数的作用域(scope)就是变量生效的的区域
- 分类:全局变量-全局作用域和局部变量-函数作用域
- 全局作用域:
o 全局作用域在程序创建时创建,在程序销毁时销毁
o 所有函数以外的区域就是全局作用域
o 在全局作用域里的变量都是全局变量,可以在程序中任何位置使用 - 函数作用域:
o 函数作用域在函数创建时创建,在调用结束时销毁
o 函数每调用一次就会产生一个新的函数作用域
o 在函数中定义的变量只是局部变量,只能在函数内部使用
- (如果你希望在函数内部设置全局变量时,可以使用global关键字来声明变量)
3.3 实参的类型
- 实参可以传递任何对象,但你要注意函数中对应的形参可不可以应用你所输入的实参
- 在函数这种给形参重新赋值,不会影响其他变量
- 如果形参是一个对象,当通过形参修改对象时,会影响到所有的指向该对象的变量
4、文档字符串
- 作用:在函数内部编写的对函数的说明文档
(直接使用三个’号创建)
- help()函数:Python内置函数,用来查询Python中函数的用法函数的
(在help()的括号中直接输入函数名即可,自定义函数也可)
5、递归函数
- 定义:递归是一种解决问题的思想,将一个问题分解成一个个小问题来解决
- 条件:递归有两个条件,一是基线条件,二是递归条件
o 基线条件:大问题分解成小问题,当满足基线条件时,递归就不执行了
o 递归条件:将问题分解的条件