python学习笔记8-函数2

发布于:2024-12-07 ⋅ 阅读:(152) ⋅ 点赞:(0)

参数传递

  • 传不可变对象 & 传可变对象
  • def func(b):
        print(id(a), a) #140737041872600 234
        print(id(b), b) #140737041872600 234
    
    a = 234
    func(a)
    
    def func(b):
        print(id(a), a) #1413554098560 [343]
        print(id(b), b) #1413554098560 [343]
    
    a = [343]
    func(a)
    
    def func(b):
        b.append(444)
        print(b)#[343, 444]
    
    a = [343]
    func(a)
    print(a)#[343, 444]

必须参数

  • 必须接受一个实参
  • 实参通常可以传位置参数,也可以传关键字参数

关键字参数

  • 实参按照关键字传给对应的形参,与位置无关

  • 关键字参数必须放在位置参数后面

默认参数

  • 没有传实参时,使用默认值

不定长参数

  • *args:接受[0, 正无穷)个位置参数,将其打包为一个元组
  • **kwargs:接受[0, 正无穷)个关键字参数,将其打包为一个字典,必须放在所有形参的最后。
  • def func(a, b, *c, d=999, **k):
        print(a)
        print(b)
        print(c)
        print(d)
        print(k)
    
    func(1,2,3,4,5,6,6,6,)
    '''
    输出结果:
    1
    2
    (3, 4, 5, 6, 6, 6)
    999
    {}
    '''
    def func(a, b, *c, d=999, **k):
        print(a)
        print(b)
        print(c)
        print(d)
        print(k)
    
    func(1, 2, 3, 4, 5, 6, 6, 6, x=23, y=['🐱🐕'])
    '''
    输出结果:
    1
    2
    (3, 4, 5, 6, 6, 6)
    999
    {'x': 23, 'y': ['🐱🐕']}
    '''

    特殊参数

  • 默认情况下,实参的传递形式可以是位置参数或关键字参数

  • 可以用 / 和 * 来限制参数的传递形式

  • 其中 / 为仅限位置参数,限制在参数的传递形式

  • 其中* 为仅限关键字参数,限制在它之后的形参只能接受关键字参数

  • 这两个特殊参数只是为了限制参数的传递形式,不需要为它们传入实参

def func(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
    pass

func(1, 2, 3, kwd1=4, kwd2=5)

匿名函数

  • 格式:lambda[arg1,...]:expression
  • 匿名函数的参数可以有多个,但后面的expression只能有一个
  • 匿名函数返回值就是expression的结果,而不需要return语句
  • 匿名函数可以在需要函数对象的任何地方使用

网站公告

今日签到

点亮在社区的每一天
去签到