Skip to content

函数介绍

函数定义

函数定义:使用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变量作用域:

  1. 局部变量:函数内部定义的变量,只在函数内部有效,函数执行结束,变量销毁。
python
a = 2
def main():
    a = 1  # 局部变量
    print(a)  # 展示为1 展示为就近原则
  1. 全局变量:函数外部定义的变量,可以在函数内部使用,函数执行结束,变量依然有效。
python
a = 1
def main():
   print(a)   # a 全局变量
   
# 修改全局变量
a = 1
def main():
  global a  # 在函数内部修改全局变量, 需要使用global关键字
  a = 100
  1. 闭包:嵌套函数,内部函数使用外部函数的变量,外部函数返回内部函数名。
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")

上次更新于: