函数的传参
必传参数
- 函数中定义的参数
没有默认值,在调用函数时如果不传入则报错 - 在定义函数的时候,参数后边没有等号与默认值
- 错误:def add (a=1, b=1)
x- 在定义函数的时候,没有默认值且必须在函数执行的时候传递进去的参数,且顺序与参数顺序相同,就是必传参数
默认参数(非必传参数)
- 在定义函数的时候,定义的参数含有默认值,通过赋值语句给他设一个默认的值
- 如果默认参数在调用函数的时候给予了新的值,函数将优先使用后传入的值进行工作
不确定参数-可变参数
- 没有固定的参数名和数量(不知道要传的参数名具体是什么)
*args代表 :将无参数的值合并成元组**kwargs代表将有参数与默认值的赋值语句合并成字典
参数规则
参数的定义从左到右依次是
必传参数
默认参数
可变元组参数
?# 如果赋值的形式传参,则需要将可变的元组类型放在第一位
可变字典参数
函数的参数传递
非常灵活必传参数与默认参数的传参多样化函数体内不可加
*号
代码
| # coding:utf-8 | |
| def add(a, b, c=3): | |
| return a + b + c | |
| result = add(1, 2) | |
| print(result) | |
| result = add(1, 2, 6) | |
| print(result) | |
| def test_args(*args, **kwargs): | |
| print(args, type(args)) | |
| print(kwargs, type(args)) | |
| test_args(1, 2, 3, 4, 5, 6, 7, 8, 9, name='dewei', age=33, top=174) | |
| def test_args_supre(*args, **kwargs): | |
| if len(args) >= 1: | |
| print(args[0]) | |
| if 'name' in kwargs: | |
| print(kwargs['name']) | |
| else: | |
| print('no name') | |
| print(args, len(args)) | |
| print(kwargs, len(kwargs)) | |
| test_args_supre(1, name='dewei') | |
| a = ('python', 'django') | |
| b = {'name': 'dewei'} | |
| test_args_supre(*a, **b) | |
| def add(a, b=1): | |
| print(a + b) | |
| add(1, 2) | |
| add(1) | |
| add(a=1, b=2) | |
| add(b=2, a=1) # 仅限于当前形式 | |
| # add(b=2) # 会报错 | |
| def test(a, b=1, *args): | |
| print(a, b, args) | |
| s = (1, 2) | |
| test(1, 2, *s) | |
| # test(a=1, b=2, *s) # 如果赋值的形式传参,则需要将可变的元组类型放在第一位 | |
| def test2(*args, a, b=1): | |
| print(a, b, args) | |
| test2(a=1,b=2, *s) | |
| def test3(a, b=1, **kwargs): | |
| print(a, b, kwargs) | |
| test3(1, 2, name='dewei') | |
| test3(a=1, b=2, name='dewei') | |
| test3(name='dewei', age=33, a=1, b=2) | |
| d = {'name': '小慕'} | |
| test3(a=1, b=2, **d) | |
| test3(**d, a=1, b=2) | |
| test3(**d, a=1, b=2) | |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZkeqのCoding日志!
评论






