小言
今天学到的几个基础知识很好的理解python的代码
1)缺省参数 2)多值参数 3)元组和字典拆包
知识点
1)缺省参数
# 默认的缺省参数都是在末尾的
# 有多个缺省参数时在调用参数的时,需要给一个具体的参数名。
def demo(name, title="", gender=True)
pass
gl_name = "Murphy"
demo(gl_name, gender=False)
2) 多值参数
# 有时候可能需要 一个函数 能够处理的 个数 是不确定的,这个时候,就可以使用 多值参数
# python中有两种多值参数
# 参数名前增加一个 * 可以接收 元组 ()
# 参数名前增加两个 ** 可以接收 字典 {}
# 一般在给多值参数命名的时候,习惯使用以下两个名字
# *args 存放 元组 参数,前面有一个 *
# **kwargs 存放 字典 参数,前面有两个 **
# args 是 arguments的缩写,有变量的含义
# kwargs kw 是keyword。字典里有键值对,有键值对参数
def demo(args, *args, **args)
pass
demo(1, 2, 3, 'www', name="Murphy")
>>>args : 1
>>>*args : (2,3,'www')
>>>**args : {'name': 'Murphy'}
3)元组和字典拆包
# 3.1 问题
# 在调用带有多值参数的函数时,如果希望:
# 将一个 元组 变量,直接传递给 args
# 将一个 字典 变量,直接传递给 kwargs
# 就可以使用 拆包 ,简化参数的传递, 拆包的方式是:
# 在 元组变量 前,增加一个 *
# 在 字典变量 前,增加两个 **
def demo(*args, **kwargs):
pass
gl_num = (1, 2, 3)
gl_list = {'name': '小吴', 'age': 24}
demo(gl_num, gl_list)
上段代码打印的结果全给了args元组变量为:((1, 2, 3), {'name': '小吴', 'age': 24}) {}
# 3.2 解决
# # # 拆包语法 ,简化 元组变量 / 字典变量的传递
# 在 元组变量 前,增加一个 *
# 在 字典变量 前,增加两个 **
demo(*gl_num, **gl_list) 等价于 demo(1, 2, 3, name='小吴', age=24)