函数介绍
函数定义
函数定义:使用def关键字定义函数
参数 | 描述 |
---|---|
位置参数 | def fun(a,b,c) 顺序一一对应 |
默认参数 | def fun1(a,b,c) |
关键字参数 | def fun2(a,b,c=1) |
可变参数 | def fun3(a,b,*c) * 元组 ** 字典 |
关键字可变参数 | def fun4(a,b,*c,d=1,e=2) |
高阶函数:函数作为参数传递给另一个函数,函数作为返回值返回。
高阶函数 | 描述 |
---|---|
map() | 两个序列的元素对应相乘,返回一个序列。 map(f,[x1,x2,x3]] = [f(x1),f(x2),f(x3)] |
reduce() | 函数必须输入两个参数,把结果继续和序列中的下一个元素运算。 reduce(f,[x1,x2,x3]] = f(f(x1,x2),x3) |
filter() | 函数必须输入一个参数,返回一个序列。 filter(f,[x1,x2,x3]] = [x1,x2,x3]中满足f(x)为True的元素 |
sort() | 对序列进行排序,默认升序排列 sort(seq,key=abs) key排序函数 |
lambda | 匿名函数,函数名省略;函数体以:开头。 lambda x:x+1 |
python
seq = [11,45.67,-6.2e8]
def convert(fun,seq):
return [fun(i) for i in seq]
convert(int,seq)
convert(float,seq)
# map方式
map(int,seq) # 等价于convert(int,seq)
# reduce方式
def add(a,b):
return a+b
reduce(add,[1,2,3])
# filter方式
filter(lambda x:x>0,seq)
python
def 函数名([参数1,参数2...]):
函数体
[return 表达式]
样例:
def main():
print("hello world")
def add(a,b):
return a+b
# 执行函数
main()
# 查看注释
print(add.__doc__) # add 函数名
变量作用域
python变量作用域:
- 局部变量:函数内部定义的变量,只在函数内部有效,函数执行结束,变量销毁。
python
a = 2
def main():
a = 1 # 局部变量
print(a) # 展示为1 展示为就近原则
- 全局变量:函数外部定义的变量,可以在函数内部使用,函数执行结束,变量依然有效。
python
a = 1
def main():
print(a) # a 全局变量
# 修改全局变量
a = 1
def main():
global a # 在函数内部修改全局变量, 需要使用global关键字
a = 100
- 闭包:嵌套函数,内部函数使用外部函数的变量,外部函数返回内部函数名。
python
def fun_out(n1):
def fun_in(n2): # 闭包
return n1+n2
return fun_in
f=fun_out(1)
result = f(2) = 3
装饰器
装饰器:本质是返回函数的高阶函数。使用"@装饰器名称"的形式将符号放在函数或类的定义行前,相当于调用装饰器函数。
装饰器是一种闭包,它使闭包的访问更简单。
python
def log(func):
def wrapper():
func()
return wrapper
@log # 相当于 log(main)
def main():
print("hello world")