python----函数的动态传参
函数的动态传参
*args 将所有的实参的位置参数聚合到一个元组,并将这个元组赋值给args
有些时候,对于函数,传入的实参数量可能是不固定的,也就是动态的,这个时候我们就需要用到函数的动态传参。下面举个个列子,我需要一个函数,无论我给他任意个数字参数,他都能返回我所有数字的和。
def count(*args):
sum0 = 0
for i in args:
sum0 += i
return sum0
print(count(1,2,3,4,5))
#运行结果:15
这样无论我在函数count中输入多少个数字,都能返回和。*args就是动态传参,实质上是函数会将接受到的值打包成元祖的形式赋值给args,不信你可以在函数值用type去判断。总结:*在函数的定义时,在 *位置参数,聚合
**kwargs 将所有的关键字实参作为字典的键值对聚合到一个字典,并赋值给kwargs
有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键 — 值对 —— 调用语句提供了多少就接
受多少。
def func1(**kwargs):
print(kwargs) func1(name = 'king',age = 24)
运行结果:{'name': 'king', 'age': 24}
可以看出**是将接收到的关键字参数作为键值对赋值给,kwargs。
编写一个函数,将一辆汽车的信息存储在一个字典中。这个函数总是接受制造商和型号,还接受任意数量的关键字实参。这样调用这个函数:提供必不可少的信息,以及两个名称 — 值对,如颜色和选装配件。这个函数必须能够像下面这样进行调用:
car = make_car('subaru', 'outback', color='blue', tow_package=True)
分析要求,题目要求函数总是接受制造商和型号,也就是这2个参数是必须填的,我们可以设置成位置参数,而其他还接受任意数量的关键字实参。所以需要用到**方法:
def make_car(name,producter,**kwargs):
dic = {}
dic['车型'] = name
dic['生产商']=producter
for i in kwargs:
dic[i] = kwargs[i]
return dic
car = make_car('subaru', 'outback', color='blue', tow_package=True)
print(car)
#运行结果:
{'车型': 'subaru', '生产商': 'outback', 'color': 'blue', 'tow_package': True}
#如果只输入car = make_car('subaru', 'outback')
则会打印 {'车型': 'subaru', '生产商': 'outback'}
函数形参的顺序
位置参数,*args, 默认参数 **kwargs我们在定义形参时,必须遵循这样的原则位置参数,默认参数
def func(a,b,sex='男'):
# print(a)
print(sex)
func(100,200,)
位置参数,*args, 默认参数
def func(a,b,*args,sex='男',):
# print(a)
print(a,b)
print(sex)
print(args)
func(100,200,1,2,34,5,6)
位置参数,*args, 默认参数 **kwargs
def func(a,b,*args,sex='男',**kwargs,):
print(a,b)
print(sex)
print(args)
print(kwargs)
func(100,200,1,2,34,5,6,sex='nv',name='alex',age=1000)
python----函数的动态传参的更多相关文章
- python函数的动态传参.作用域与命名空间
一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi ...
- python之路--动态传参,作用域,函数嵌套
一 . 动态传参(重点) * , ** * 与 ** * 在形参位置. * 表示不定参数, 接收的是位置参数 接收到的位置参数的动态传参: 都是元组 def eat(*food): # 在形参这里 ...
- python记录_day10 动态传参 命名空间 作用域
一.动态传参 动态传参用到 *args 和 **kwargs ,*号表示接收位置参数,args是参数名:**表示接收关键字参数,kwargs是参数名 def chi(*food): print(foo ...
- Python函数定义及传参方式
主要内容: 1.函数初识 2.函数传参方式 (1)位置参数 (2)默认参数 (3)关键参数 (4)非固定传参 一.函数初识 1. ...
- python函数关键字实参传参
#!/usr/bin/python #coding=utf-8 #好好学习,天天向上 def describe_pet(type,name): print(f"i have a {type} ...
- python函数位置实参传参
#!/usr/bin/python #coding=utf-8 #好好学习,天天向上 def describe_pet(type,name): print(f"i have a {type} ...
- python(动态传参、命名空间、函数嵌套、global和nonlocal关键字)
一.函数的动态传参 1.*args位置参数动态传参 def chi(*food): print(food) chi("烧烤","火锅","虾吃虾涮&q ...
- python-函数-动态传参,作用域的问题,函数嵌套,global nonlocal
⼀. 函数参数--动态传参 之前我们说过了传参, 如果我们需要给⼀个函数传参, ⽽参数⼜是不确定的. 或者我给⼀个 函数传很多参数, 我的形参就要写很多, 很⿇烦, 怎么办呢. 我们可以考虑使⽤动态参 ...
- 函数动态传参,命名空间,gloabal,nonlocal关键字
一.函数参数->动态传参(形参的第三种) 动态参数分为两种: 1)动态接收位置参数 普通的位置传参: def func(quality_food,junk_food): print('我要吃', ...
- python 函数的动态参数 命名空间,作用域以及函数嵌套,global和nonlocal (重点)
*** 坚持坚持,即使你不太强*** 1.函数的动态传参 2.函数的命名空间及作用域 3.函数嵌套 4.global和nonlocal关键字 一.函数的动态传参 1. *args: 位置参数动态传参, ...
随机推荐
- mybatis抽取出的工具-(一)通用标记解析器(即拿即用)
目录 1. 简介 1.1 mybatis-config.xml 中使用 1.2 xxxMapper.xml 中使用 2. 原理 2.1 GenericTokenParser 成员变量 2.2 Gene ...
- zookeeper-分布式锁的代码实现-【每日五分钟搞定大数据】
本文涉及到几个zookeeper简单的知识点,永久节点.有序节点.watch机制.比较基础,熟悉的就别看了跳过这篇吧 每个线程在/locks节点下创建一个临时有序节点test_lock_0000000 ...
- Kickstart Practice Round 2017---A
Problem The Constitution of a certain country states that the leader is the person with the name con ...
- Python学习第十三篇——函数的深层次运用
def make_pizza(size,*toppings): print("\nmaking a "+str(size)+" size pizza with follo ...
- Mike and palindrome CodeForces - 798A
题目链接 一个简单的题目,但是却很少有人可以一次AC,比如我就瞎写wa了一次... 写本博算个教训录吧. 题目给出一个字符串,让你严格的改变一个字符使改变后的字符串是一个回文串. 回文串不用解释了.不 ...
- elasticSearch聚合sum查询
有时需要统计一段时间内,订单的总金额.类似于sql的sum,针对某一字段求和.这就涉及到es的聚合查询,来看看用spring-data-elasticSearch怎么写: QueryBuilder ...
- P66 整环的零元
R/I=0的零因子是0+I吗? 如果不是,那请问R/I的零因子是什么呢? R/I没有零因子 R/I的零元 是I中的元素定义的等价类 么 a是理想I的元素,自然也是R的元素
- stark组件的增删改
1.效果图 2.详细步骤解析 3.总结.代码 1.效果图 增 删除 改 2.详细步骤解析 1.构造增删改查url,反向解析 2.ModelForm定制add.edit页面 3.starak中的 ...
- 软工网络15团队作业7——Alpha冲刺之事后诸葛亮
Deadline: 2018-5-16 22:00PM,以博客提交至班级博客时间为准 事后诸葛亮分析 Alpha冲刺,很多同学经历了"Learning by doing"的学一门新 ...
- css实现三栏自适应布局(两边固定,中间自适应)以及优缺点
方法一:绝对定位(absolute + margin) 原理:给左右两边的元素设置absolute,这样左右两边的元素脱离标准文档流的控制,中间的元素自然会上来,然后给中间的元素设置margin留出左 ...