python笔记 可变参数

128 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情

0 环境

  • 编辑器:idea或vscode
  • 系统版本:windows10
  • python版本:3.9.6

1 可变位置参数

假设在日常开发中,会遇到临时改变函数参数,每次都手动改,一个麻烦,二个容易出错,我们很需要一种参数的可变,只是需要一个参数变量接收所有的值,它的定义:def 函数名(参数),这里*参数名, 参数前的代表它是可变的,可以接收任意多个参数,并且这些参数将构成一个元组。

它出现的踪迹还是很多的。 image.png

比如多个值的累加,调用函数,传入了多个值,被*t接收,打印t的类型以及它的接收值,然后遍历,值相加,最终值返回给函数。

def add_value(*t):
    print(f"类型 --> {type(t)}")
    print(t)
    
    result = 0
    for item in t:
        result += item
    return result

if __name__ == '__main__':
    print("结果 -->", add_value(1,22,3,4,5))

image.png

2 可变关键字参数

用关键字传参,需要双星**参数,key-value正好key是host,port这些关键字,value对应它们的值。

image.png

你可能会认为可变关键字参数只会用于在配置数据库这类的操作,其实不然,用到的地方挺多的,假如在django+vue前端分离的项目中,在前端用户管理中添加用户信息,通过axios调用post方式携带某行数据传递给后端,对于后端来说,就是user表插入一行用户信息到数据库中,后端获取得到该行的数据,这里我们用最基础的方式对数据库操作,User(**data).save()

3 总结

可变关键字参数(**)和可变位置参数(*),一种参数构成是字典,另一种参数构成是元组。