在一个完整的项目中,某些功能会反复使用,那么会将功能封装成函数,当我们要使用功能的时候直接调用函数即可
本质:函数就是对功能的封装
格式:
def 函数名(参数列表):
语句
return 表达式
不定值传参:加了星号(*)的变量存放所有未命名的变量参数,如果在函数调用时没有指定参数,就是一个空元组
def func(name,*args)
传递关键字参数:
def func2(**kwargs):
print(kwargs)
func2(x=1,y=2)
匿名函数:不适用def这样的语句定义函数,使用lambda来创建匿名函数
特点:
1.lambda只是一个表达式,函数体比def简单
2.lambda的主体是一个表达式,而不是代码块,仅仅只能在lambda表达式中封装简单的逻辑
3.lambda函数有自己的命名空间,且不能访问自由参数列表之外的或全局命名空间的参数
格式:lambda 参数1,参数2,….:expresion
sum1=lambda num1,num2:num1+num2
print(sum1(1,2))
装饰器
是一个闭包,把一个函数当作参数返回一个替代版的函数,本质上就是一个返回函数的函数
def func(age):
print('age is %d'%age)
def func2(func):
def inner(age):
if age < 0:
age = 0
func(age)
return inner
func=func2(func)
func(-10)
等同于
def func2(func):
def inner(age):
if age < 0:
age = 0
func(age)
return inner
@func2
def func(age):
print('age is %d'%age)
func(-10)
变量的作用域
作用域:变量可以使用的范围
程序的变量并不是在所有位置都能使用的,访问的权限决定于变量在哪赋值。
1.局部作用域
2.函数作用域
3.全局作用域
4.内建作用域