A-02 函数-高级


文章目录

  • A-02 函数-高级
  • 一、匿名函数
  • 作用
  • 语法
  • 示例
  • 二、嵌套函数
  • 作用
  • 示例
  • 三、高阶函数
  • 作用
  • 示例
  • 四、递归函数
  • 作用
  • 示例
  • 特点
  • 五、内置函数


一、匿名函数

作用

python 使用 lambda 来创建匿名函数。所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  • lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法

lambda 函数的语法只包含一个语句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

示例

# 可写函数说明 
sum = lambda arg1, arg2: arg1 + arg2 
# 调用sum函数 
print ("相加后的值为 : ", sum( 10, 20 )) 
print ("相加后的值为 : ", sum( 20, 20 ))

不过匿名函数主要是和其它函数搭配使用的呢,如下

res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
    print(i)

输出:

1
25
49
16
64

二、嵌套函数

作用

函数里不仅可以写代码,还可以嵌套函数

示例

name = "全局的name"

def change():
    name = "change的name"

    def change2():
        # global name  如果声明了这句,下面的name改的是最外层的全局变层
        name = "change2的name"  # 这句注释掉的话,下面name打印的是哪个值?
        print("第3层打印", name)

    change2()  # 调用内层函数
    print("第2层打印", name)

change()
print("最外层打印", name)

输出结果

第3层打印 change2的name
第2层打印 change的name
最外层打印 全局的name

三、高阶函数

作用

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
总结:需满足以下任意一个条件,即是高阶函数

  • 接受一个或多个函数作为输入
  • return 返回另外一个函数

示例

def get_abs(n):
    if n < 0 :
        n = int(str(n).strip("-"))
    return n
def add(x,y,f):
    return f(x) + f(y)
res = add(3,-6,get_abs)
print(res)

四、递归函数

作用

函数内部,可以调用其他函数。如果一个函数在内部调用自已本身,这个函数就叫做递归函数。

示例

def calc(n):
    n = int(n/2)
    print(n)
    if n > 0:
         calc(n)
    print(n) 
calc(10)

输出

5
2
1
0
0
1
2
5

python fastapi的入参如果定义了__init___高阶函数


上图所示:函数在每进入下一层的时候,当前层的函数并未结束,它必须等它调用的下一层函数执行结束返回后才能继续往下走。 所以最下面的那句print(n)会等最里层的函数执行时才会执行,然后不断往外退层,所以会出现0、1、2、5的效果

特点

  • 必须有一个明确的结束条件
  • 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
  • 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

五、内置函数

Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。以下按字母表顺序列出它们。

python fastapi的入参如果定义了__init___Python高级_02

具体介绍,详见官方指导内置函数详细介绍