函数
函数的概念:
函数就是实现某一特定功能的代码的封装。
函数的分类
系统函数:系统已经定义好的函数,程序根据需求直接使用
自定函数:程序员自己定义的函数。(自己造的机器)
自定函数语法:
def 函数名(形参列表):
(函数说明文档:
函数功能说明
参数说明
返回值说明) #相当于机器的说明书
函数体
位置参数和关键字参数
- 位置参数 ----调用函数的时候直接在括号里面写多个实参,实参和形参是一一对应的
- 关键字参数----调用函数的时候以 形参名=实参 的形式来确定实参(位置不影响结果)
关键字不能重复且不能少
ps:位置参数和关键字参数可以一起使用,但是位置参数必须在关键字参数前面
不管以什么样的形式传参,最终都要保证每个参数都有值
例:
def fun1(a,b):
print(f'a:{a},b:{b}')
fun1(10,20)
fun1(a=10,b=20)
形参默认值
- 定义函数的时候,可以给形参赋默认值;如果形参有默认值,那么这个参数在调用的时候可以不用传参。
- 如果定义函数的时候有的参数有默认值,有的参数没有默认值,没有默认值的放前面,有默认值的放后面
例:
def fun1(b=20):
pass
不定长参数(参数个数不确定)
1)定义函数的时候在一个参数前加*,那么这个参数就是一个不定长参数,可以同时接收多个参数(以元组的形式保存)
注意: a.带*的参数的本质就是一个元组;
b.在调用的时候这个参数必须使用位置参数传参
2)定义函数的时候在一个参数前加 * * ,那么这个参数就是不定长参数,可以同时接收多个参数(以字典的形式保存)
dun1(*x,**y) 两种不定长参数一起用,最终还是实现一个参数不定的函数,只是在调用的时候更加灵活,既可以用位置参数传参也可以用关键字参数传参,还可以位置参数和关键字参数一起用
return关键字
return 只能在函数体中使用的关键字,作用有两个:
- 确定函数返回值(return是什么,函数的返回值就是什么)
- 提前结束函数(只有遇到return,整个函数直接结束)
- 如果在执行函数的时候没有遇到return,那么函数返回值是None
全局变量
定义在函数和类的外部的变量就是全局变量。
作用域:从定义开始到文件结束的任何位置都能使用
局部变量
定义在函数中的变量就是局部变量
作用域:从定义开始到函数结束的任何位置都能使用
例:
#x是全局变量
for x in range(4):
# y是全局变量
y=10
pass
# x,y是局部变量
def fun1(x,y):
pass
global和nonlocal
global和nonlocal只能在函数体中使用。
global:用global在函数里面定义一个全局变量,用global声明的变量只能在声明之后使用
nonlocal:定义局部的局部变量
例:
dict1={'num':123,'money':100}
def cun(x):
# global dict1
dict1['money']+=x
匿名函数
匿名函数的本质还是函数,除了定义的语法以外,其他的和普通函数没有区别
语法:
函数名=lambad 参数列表 :返回值
例:
sum1=lambda a,b:a+b