千锋教育python2104期总结day12

千锋教育python2104期总结

第十一次总结: 函数进阶

目录

  1. 匿名函数
  2. 变量作用域
  3. 函数就是变量
  4. 常用实参高阶函数
  5. map和reduce
  6. 作业

正文

1.匿名函数
  1. 匿名函数
    语法:
    函数名 = lambda 参数列表: 返回值

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

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

sum1 = lambda num1, num2=10: num1 + num2

print(sum1(10, 20))
print(sum1(num1=100, num2=200))
print(sum1(5))
2.变量作用域

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

  1. 全局变量
    没有定义在函数里面或者类里面的变量就是全局变量;
    全局变量的作用域是从定义开始到程序结束。

2.局部变量
定义在函数里面的变量是局部变量(形参也是局部变量);
局部变量的作用域是从定义开始到函数结束。

3.函数调用过程(内存的变化)
每次在调用函数的时候,系统会自动在栈区间为这个函数开辟一个临时内存区域,用来存储在函数中定义的局部变量。
当函数调用结束的时候系统会自动释放这块内存。
“”“1.全局变量”""

a、b、c都是全局变量


a = 100

for b in range(10):
    print(b)
    c = 20
    print(f'循环里面使用a:{a}')

print(f'循环外面使用b和c:{b}, {c}')

def func1():
    print(f'函数中使用a、b、c:{a}, {b}, {c}')
func1()

“”“2. 局部变量”""

def func2(x):
    y = 100
    for z in range(10):
        pass
    print('函数结束')
    print(f'函数里使用x, y, z:{x}, {y}, {z}')\



func2(20)
# print(f'函数外面使用x,y,z:{z}')   # 报错

“”"
4. global和nonlocal - 只能在函数体中使用
global - 1)在函数中修改全局变量的值,需要在前面用global对变量进行说明;
2)在函数中定义一个全局变量,需要在前面用global对变量进行说明。
global 变量名

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

m = 100
n = 100


def func3():
    m = 200

    global n
    n = 200
    
    print(f'函数中m:{m}')
    print(f'函数中n:{n}')
    
    global x
    x = 'abc'

func3()
print(f'函数外面 m:{m}')
print(f'函数外面 n:{n}')
print(f'函数外面 x:{x}')
3.函数就是变量

python中定义函数就是定义类型是function的变量,函数名就是变量名

func1 = lambda x: x*2
print(type(func1))    # <class 'function'>

相等于:

def func1(x):
    return x*2
def func2():
    print('函数!')

a = 10

print(type(a))      # <class 'int'>
print(type(func2))  # <class 'function'>

print(id(a))
print(id(func2))

变量作为函数的参数

def func3(x):
    print(f'x:{x}')


def func4():
    print('函数4')


func3(199)

num = 200
func3(num)

func3(func4)
4.常用实参高阶函数

1.常用实参高阶函数
max、min、sorted/sort
map
reduce
“”"

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

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

"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值