函数定义和调用
def 函数名():
执行语句
函数名() #调用函数
定义了函数之后,就相当于有了一个具有某些功能的代码,想要让这些代码能够执行,需要调用它 调用函数很简单的,通过 函数名() 即可完成调用 每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了 当然了如果函数中执行到了return也会结束函数
函数参数
(1)位置参数[在调用是直接用数字代替]
定义时小括号中的参数,用来接收参数用的,称为 “形参”
调用时小括号中的参数,用来传递给函数用的,称为 “实参”
(2)关键字参数
在调用是给出关键字=值
eg:hanshu(a=2)
参数调用时,可以改变传参顺序,如果有位置参数需要位置参数放在关键字参数前面
(3)缺省参数
在形参中默认有值的参数,称之为缺省参数
调用函数时,缺省参数的值如果没有传入,则取默认值(形式参数),如果传入,则取实际参数 缺省参数一定要位于位置参数的最后面
(4)不定长参数
加了星号(*)的变量args会存放所有未命名的变量参数,args为元组 :(* args不能接收key=value类型的参数)
加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典
参数位置顺序
def fun(位置参数,*args,缺省参数,**kwargs)
注意:•如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面, 但如果有 **kwargs的话,**kwargs必须是最后的
函数返回值
return可以提取函数返回值
return函数中下面的代码不会被执行,因为return除了能够将数据返回之外,还有一个隐藏的功能:结束函数
一个函数中可以有多个return语句,但是只要有一个return语句被执行到,那么这个函数就会结束 了,因此后面的return没有什么用处
函数类型
1. 无参数,无返回值
eg:只能打印内容
2.无参数,又返回值
eg:采集数据
def getTemperature(): # 这里是获取温度的一些处理过程
# 为了简单起见,先模拟返回一个数据
return 24
3.有参数,无返回值
此类函数,能接收参数,但不可以返回数据,一般情况下,对某些变量设置数据而不需结果时,用此类函数
4.有参数,有返回值的函数
# 计算1~num的累积和(案例需实际演示)
def calculateNum(num):
result = 0
i = 1
while i<=num:
result = result + i
i+=1
return result
函数嵌套
一个函数里面又调用了另外一个函数,这就是所谓的函数嵌套调用
eg:写一个函数求每个数与平均值之间的差,并返回结果
def sum(a,b,c):
return a+b+c
def avg(a,b,c):
return sum(a,b,c)/3
def chazhi(a,b,c):
return a-avg(a,b,c),b-avg(a,b,c),c-avg(a,b,c)
print(chazhi(5,5,5))
匿名函数
lambda函数也叫匿名函数,即函数没有具体的名称
注意:lambda函数可以赋值给变量,默认是返回的,所以不用再加return关键字
变量
局部变量
局部变量,就是在函数内部定义的变量,其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储 当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了
eg:def bb():
a=120
print(a,"局部变量")
a=220
print(a,"修改后的局部变量")
def aa():
a=110
print(a,"aa的局部变量")
bb()
aa()
全局变量
在函数外边定义的变量叫做全局变量,函数中的变量修改不会导致全局变量改变
a=990
def bb():
print(a,"a是全局变量")
bb()
全局变量的修改
eg:
a=110
def bb():
global a
a=220
print(a)
def mm():
print(a)
bb()
mm()