目录
一、什么是函数
函数是对程序逻辑进行结构化或过程化的一种编程方法。能将整个代码块隔离成易于管理的小块,把重复代码放到函数中就不需要进行大块地重复拷贝应用,减少代码的冗余,有助于保持一致性。
函数的阶段:
(1)定义阶段
过程:
申请一块内存空间,把函数体代码放进去,把内存地址给函数名。
注意:在定义阶段只检测语法,不执行函数体代码 。
(2)调用阶段
过程:
根据函数名找到存着代码块的内存地址,执行函数体代码。
二、为什么用函数
函数的作用:
(1)明晰函数的组织结构,增强可读性
(2)减少代码的冗余
(3)降低管理、维护的难度,增强扩展性
三、函数的分类
#1、内置函数 为了方便我们的开发,针对一些简单的功能,python解释器已经为我们定义好了的函数即内置函数。对于内置函数,我们可以拿来就用而无需事先定义,如len(),sum(),max() ps:我们将会在最后详细介绍常用的内置函数。 #2、自定义函数 很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,事先定制好我们自己的函数来实现某种功能,以后,在遇到应用场景时,调用自定义的函数即可
四、函数的定义
(1)语法:
def functionname(参数1,参数2,...): """ 文档描述 """ 代码块 return 返回值
(2)def是定义函数的关键字
函数名是用来调用函数的,函数名需要能反应函数功能。
(3)调用
①方式:
函数名(参数1,参数2,...)
②调用函数的原则:
先定义再调用
直接调用会报NameError错误(函数名、变量名等统称为名字)
(4)定义函数的三种方式:
①有参数
参数是函数用来接受外部传入的值
def func(x,y): if x>y: return x else: return y func(10,13)
②无参数
当函数不需要调用者传入函数值的前提下就无参
def interactive():
name=input('username>>').strip() pwd=input('password>>').strip() interactive()
③空函数
def func(): pass func()
五、函数调用
函数调用的三种方式:
#第一种方式: def func(): print('hello world') func() #第二种方式: def max(x,y): if x>y: return x else: return y #(1) res=max(10,13) print(res) #(2) res=max(10,13)*100 print(res) #第三种方式 def max(x,y): if x>y: return x else: return y res=max(10,13) res=max(res,12) print(res)
函数的返回值:
当函数体代码运行完后需要给调用者一个返回值。
1.函数返回值的三种用法:
(1)没有写return时,也有我们看不见的return作为函数执行结束的标志,它的值为None
(2)return返回值后跟有一个值时,将返回其本身
(3)return返回值跟有多个值时,将以元组 的形式返回多个值
2.注意点:
(1)return是函数执行结束的标志
(2)return返回值是没有类型限制的
(3)函数内可写多个return,但是只执行一个
六、函数参数
形参是函数定义时,括号内定义的参数,即变量名。
实参是函数调用时,括号 内传入的值,过程是将值绑定到变量名上,函数调用就结束,绑定解除。
应用:
1.位置参数:按照从左到右的顺序定义参数
位置形参:必选参数
位置实参:按照位置给形参传值
2.关键字参数:按照key=value形式定义实参
无需按位置传值
关键字参数必须在位置实参右边
对同一个形参不能重复传值
3.默认参数:形参在定义时就已经为其赋值
可以传值也可以不传值,经常需要变的参数定义为位置形参,变化小的参数定义为默认参数(形参)
只在定义时赋值一次
默认参数的定义应该在位置形参右边
默认参数通常应该定义为不可变类型
4.可变参数:
可变参数是指实参指个数不固定
实参按位置和关键字两种定义方式,针对两种形式的可变长,可用*args,**kwargs
5.命名关键字参数:*后定义的参数必须被传值(有默认的除外),而且必须按照关键字实参的形式传递(key=value)。