Skip to content

Latest commit

 

History

History
158 lines (108 loc) · 3.56 KB

236-562455-[专业选修]元组_tuple_作为参数.sy.md

File metadata and controls

158 lines (108 loc) · 3.56 KB
show version enable_checker
step
1.0
true

类型提示(type hint)

回忆

图片描述

  • 我们上次比较完整地了解了三种参数
    • 纯位置
      • / 之前
    • 两可
      • / 和 * 之间
    • 纯关键字
        • 之后
  • 顾名思义
    • 三类形参都有各自接受实参的方式
    • 不按方式来就报错
  • 手册里还提到了***args

图片描述

  • 是什么意思?

查看文档

图片描述

  • 可以接受任意数量的参数
  • 用*args的方式装载

构造

def sum(*args):
    result = 0
    for arg in args:
        print(arg)
        result += arg
    return result

print(sum(1, 2, 3))
  • 这个有点是可以接受任意多的变量作为参数
    • 1数相加
    • 2数相加
    • 3数相加
    • 100数相加
  • 都可以

图片描述

元组参数配合其它参数

def concat(*args,sep="/"):
    return sep.join(args)

print(concat("oeasy", "o2z", "o3z"))

图片描述

  • 如果我想把sep也修改了
  • 应该怎么办?

设置sep

图片描述

  • 把sep用关键字的方法传递到函数中

图片描述

  • 一般来说这个不定长的*args是最后一个参数
  • 如果后面还有参数
  • 一定是纯关键字(keyword only)的

图片描述

  • 不定长参数元组搁最后面么?

元组参数放后面

图片描述

图片描述

  • 他会把oeasy当做sep
  • 那这种情况如何解决?

解决

图片描述

  • 强制将":"赋给sep

图片描述

列表或元组直接做参数

图片描述

  • 尝试

图片描述

  • 貌似确实可以

构建

def sum(*args):
    result = 0
    for arg in args:
        print(arg)
        result += arg
    return result

t = (1, 2, 3)
print(sum(*t))
  • 确实可以

图片描述

  • 查看args的type

图片描述

总结

  • 我们这次了解了列表作为参数
  • 元组作为形参(args)被定义
    • 如果实参传过来是多个元素
      • 用逗号隔开
      • 函数中可以用对*args解包
      • args是一个列表
    • 这样我们就可以在调用的时候使用不定长的参数了
    • 加法、平均值这样的函数不再是固定参数个数了
    • 这很方便
  • 元组作为实参被调用的时候
    • 如果真的是一个列表变量
      • 前面要加上*
      • 变成*l
      • 可以把列表项作为参数一个个传过去
  • 文档汇总好像还提到了字典
  • 这个怎么用呢?🤔

图片描述

  • 我们下次再说👋