>>函数的分类
1、内置函数:python解释器已经为我们定义好了的函数即内置函数
如:len(),sum(),max()
2、自定义函数:需要我们自己根据需求,事先定制好我们自己的函数来实现某种功能,以后,在遇到应用场景时,调用自定义的函数即可
定义函数语法:
def 函数名(参数1,参数2,参数3,...):
代码
return 返回的值
函数名() # 调用函数
例:定义一个函数,输入姓名,并调用
>>定义函数的三种形式
1、无参
定义时无参,意味着调用时也无需传入参数
2、有参:
a. 需要根据外部传进来的参数,才能执行相应的逻辑
b. 定义时有参,意味着调用时则必须传入参数
3、空函数
>>函数参数
1、定义时小括号中的参数,用来接收参数用的,称为“形参”
2、调用时小括号中的参数,用来传递给函数用的,称为“实参”
3、定义带有参数的函数
def num(a, b):
4、调用带有参数的函数(调用带有参数的函数,需要在小括号中,传递数据)
num(10,20)
例:定义一个函数,完成前两个数加法运算,然后对第三个数进行减法,然后调用这个函数
5、五种参数
a、位置参数:按照从左到右的顺序定义的参数
位置形参:必选参数
位置实参:按照位置给形参传值
b、关键字参数:按照key=value的形式定义的实参 无需按照位置为形参传值
注意的问题:
1. 关键字实参必须在位置实参右面
2. 对同一个形参不能重复传值
c、默认参数:形参在定义时就已经为其赋值 可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)
注意的问题:
1. 只在定义时赋值一次
2. 默认参数的定义应该在位置形参右面
3. 默认参数通常应该定义成不可变类型
d、可变长参数: 可变长指的是实参值的个数不固定
而实参有按位置和按关键字两种形式定义,针对这两种形式的可变长,形参对应有两种解决方案来完整地存放它们,分别是*args,**kwargs
e、命名关键字参数:*后定义的参数,必须被传值(有默认值的除外),且必须按照关键字实参的形式传递可以保证,传入的参数中一定包含某些关键字
>>函数返回值
无return->None
return1个值->返回1个值
return逗号分隔多个值->元组
1、什么时候该有返回值?
调用函数,经过一系列的操作,最后要拿到一个明确的结果,则必须要有返回值
通常有参函数需要有返回值,输入参数,经过计算,得到一个最终的结果
2、什么时候不需要有返回值?
调用函数,仅仅只是执行一系列的操作,最后不需要得到什么结果,则无需有返回值
通常无参函数不需要有返回值
格式:
def num(a, b):
return a+b
保存函数返回值:
# 1. 定义函数
def num(a, b):
return a+ b
# 2. 保存函数返回值
result = num(10, 20)
# 3. 打印保存的返回值
print(result)
返回多个值:
def num(a, b):
return a, b
x, y = num(7, 8)
print(x)
print(y)
>>函数的嵌套调用
一个函数里面又调用另外一个函数
格式:
def testA():
print('........')
def testB():
print('.........')
testA()
print('.........')
testB()
递归函数
如果一个函数在内部不调用其它函数,而是自己本身的话,这个函数就是递归函数。
匿名函数
用lambda关键词能创建小型匿名函数。这种函数省略了def声明函数的标准步骤。
语法:lambdadef [arg1[,arg2,……argn]]:ecxpression
局部变量
在函数内部定义的变量
不同的函数,可以定义相同的名字的局部变量,但是各用各的不会产生影响
局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储。
全局变量
如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是,全局变量
总结
在函数外边定义的变量就叫做,全局变量
全局变量能够在所有的函数中进行访问
如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错
如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的