day-11 函数进阶

本文主要探讨了Python函数的高级特性,包括函数栈区间、return的两种作用、参数的多种形式(位置、关键字、默认值、不定长参数)、匿名函数lambda的使用以及实参高阶函数的应用,如max/min/sorted等。
摘要由CSDN通过智能技术生成

函数进阶

1.函数栈区间的神明周期

每次调用函数的时候,系统会自动为这个函数创建一个临时的栈区间,用来保存这个函数产生的数据。

当函数调用结束的时候,这个栈区间会自动释放,里面保存的数据也会自动销毁

def func1():
    a = 100     # a是保存在func1对应的临时栈区间中的


func1()
# print(a)        # NameError: name 'a' is not defined。 函数调用结束的时候func1对应的临时栈区间会自动释放,数据全部销毁

2.return的作用

2.1)确定函数返回值:

执行函数体的时候如果遇到return,return后面的值是函数返回值:没有遇到return返回值是None

2.2)提前结束函数:

执行函数体的时候如果遇到return,函数直接结束

def func2():
    # return        -       直接结束函数,返回是None
    # return 100    -       返回一个返回值
    # return 100, 200      # -    返回多个返回值
    for x in range(100):
        print('======')
        return
    print('end')


func2()

3.参数

3.1)位置参数和关键字参数:(根据实参提供方式的不同分类)

1)位置参数 — 调用函数的时候直接提供实参对应的数据,让实参和形参在位置上一一对应

2)关键字参数 — 调用函数的时候在实参前面加‘参数名=’。关键字参数在使用的时候可以随意交换位置

3)位置参数和关键字参数混用:位置参数必须在关键字参数的前面

def func1(a, b, c):
    print(f'a:{
     a}, b:{
     b}, c:{
     c}')

位置参数

func1(10, 20, 30)       # a:10, b:20, c:30
func1(20, 10, 30)       # a:20, b:10, c:30

关键字参数

func1(a=10, b=20, c=30)     # a:10, b:20, c:30
func1(b=20, a=10, c=30)     # a:10, b:20, c:30

func1(10, b=20, c=30)
func1(100, c=300, b=200)
func1(10, 20, c=30)

# func1(a=10, 20, 30)       # SyntaxError: positional argument follows keyword argument


def func2(x, y):
    print(f'x:{
     x}, y:{
     y}')


func2(100, 200)

3.2)参数默认值

定义函数的时候可以以‘形参=值’的方式给参数提供默认值

如果一个参数有默认值。那么调用函数的时候有默认值的参数可以不用传参

注意:如果定义函数的时候有的参数有默认值,有的参数没有,那么没有默认值的参数必须在有默认值的参数的前面。

def func3(a=10, b=20, c=30):
    print(f'a:{
     a}, b:{
     b}, c:{
     c}')


func3()     # a:10, b:20, c:30
func3(100)      # a:100, b:20, c:30
func3(100, 200)     # a:100, b:200, c:30
func3(100, 200, 300)    # a:100, b:200, c:300
func3(b=200)        # a:10, b:200, c:30


# SyntaxError: non-default argument follows default argument
# def func4(a=10, b=20, c):
#     print(f'a:{a}, b:{b}, c:{c}')


def func4(a, b=20, c=30):
    print(f'a:{
     a}, b:{
     b}, c:{
     c}')

3.3)参数类型说明 — 定义函数的时候指定参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值