Python函数的进阶 ---- 高阶函数

函数的进阶

一、匿名函数

匿名函数相关语法

​ 语法:
​ 函数名 = lambda 参数列表:返回值

相当于:
​ def 函数名(参数列表):
​ return 返回值

​ 注意:
1)匿名函数只能实现用一句代码就可以完成功能的函数
​ 2)匿名函数在调用的时候和普通函数没有区别
​ 3)匿名函数的参数不能使用冒号语法来说明类型

sum1 = lambda num1, num2: num1 + num2

print(sum1(10, 20))

二、变量作用域

变量作用域 - 指的就是变量能够使用的范围
根据变量作用域的不同,将变量分为:全局变量和局部变量

1.全局变量

​ 全局变量指没有定义在函数里面或者类里面的变量,全局变量的作用域是从定义开始直至程序结束。

2.局部变量

​ 局部变量指定义在函数里面的变量,其中:形参也属于局部变量

3.函数调用过程(内存变化)

​ 每次在调用函数的时候,系统会自动在栈区间为这个函数开辟一个临时内存区域,用来储存在函数中定义的局部变量。

​ 当函数调用结束的时候,系统会自动释放该内存,导致局部变量消失。

**注意:**在函数中可以使用全局变量

4. global和nonlocal

​ global和nonlocal只能在函数体中使用。

global ---- 1)在函数中修改全局变量的值,需要在前面用global对变量进行说明;

​ 2)在函数中定义一个全局变量,需要在前面用global对变量进行说明。

nonlocal ---- 如果需要在局部的局部修改一个局部变量的值,就需要使用nonlocal进行说明

m = 100


def func3():
    global m
    m = 200
    global x
    x = 'abc'


func3()
print(m, x)

首先需要意识到函数的本质是变量,Python中定义函数就是定义类型是function的变量,其中函数名就是变量名。

# func8和func9是实参高阶函数    -   因为这两个函数的参数中有函数
def func8(x):
    print(x())


def func9(x):
    print(x(10) / 2)


# func10是返回值高阶函数    -   因为func10的返回值是函数


def func10():
    def func11():
        print('hello')
        return 100
    return func11


print(func10()())

三、常用的实参高阶函数

1)max、min、sorted

​ max(序列,key=函数)
​ 函数要求:a.有且只有一个参数(这个参数指向的是前面序列中的每个元素)
​ b.有一个返回值(返回值就是比较对象)

nums = [89, 78, 90, 23, 67, 81]
print(max(nums))

# 求nums中个位最大的元素
nums = [89, 78, 90, 23, 67, 81]


def item(x):
    return x % 10


print(max(nums, key=item))

print(max(nums, key=lambda item: item % 10))
# max的实现原理


def lx_max(seq, *, key=None):
    if key:
        seq = list(seq
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值