当前位置: 首页 > article >正文

python学习笔记8-函数2

参数传递

  • 传不可变对象 & 传可变对象
  • 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语句
  • 匿名函数可以在需要函数对象的任何地方使用

http://www.kler.cn/a/418006.html

相关文章:

  • 充分统计量(Sufficient Statistic)概念与应用: 中英双语
  • cmake一些常用指令
  • 【真正离线安装】Adobe Flash Player 32.0.0.156 插件离线安装包下载(无需联网安装)
  • 视觉语言动作模型VLA的持续升级:从π0之参考基线Octo到OpenVLA、TinyVLA、DeeR-VLA、3D-VLA
  • 音视频技术扫盲之预测编码的基本原理探究
  • python7学习笔记-循环、迭代、pass
  • 引出泛型 实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值?
  • 从零开始学 Maven:简化 Java 项目的构建与管理
  • 数学题转excel;数学题库;数学试卷转excel;大风车excel
  • spring boot如何进行安全测试和渗透测试?
  • 使用ESP32通过Arduino IDE点亮1.8寸TFT显示屏
  • windows下osg程序键盘输入导致程序卡死问题
  • 【天地图】HTML页面实现车辆轨迹、起始点标记和轨迹打点的完整功能
  • windows安装itop
  • 算法刷题Day1
  • 探索 IntelliJ IDEA 中 Spring Boot 运行配置
  • 不玩PS抠图了,改玩Python抠图
  • QT实战--qt各种按钮实现
  • yagmail邮件发送库:如何用Python实现自动化邮件营销?
  • boss上测试面试宝典总结
  • 【MySQL】Win10同时安装MySQL8 MySQL5.7教程
  • VS与SQL Sever(C语言操作数据库)
  • Scala模式匹配——高阶用法
  • Python 和 Pyecharts 对Taptap相关数据可视化分析
  • SQL优化与性能——数据库设计优化
  • 走进科学json版:在 JSON 格式中,字符串值必须使用双引号 “ 来界定,而不能使用单引号 ‘