我们可向函数传递动态参数,*args,**kwargs,首先我们来看*args,示例如下:

1.show(*args)
def show(*args): print(args,type(args)) #以元组的形式向列表传递参数 show(11,22,33,44,55,66)
首先我们定义了一个函数,函数show(*args)里面的*args可以接收动态参数,这里我们接收一个元组形式的参数,我们可以向show()里面传递很多参数,函数默认把这些参数作为一个元组进行接收。
2.show(**args)
def show(**kwargs): print(kwargs,type(kwargs)) #以字典的形式向函数传递参数 show(k1=80,k2="alex")
由上面代码可以看出,**kwargs是以字典的形式接收参数的,我们知道,字典是由键-值对组成的,key-value,因而我们必须向里面传入键-值对的参数形式才能够接收,因此我们在里面传入了参数k1=80,k2="alex".这样生成了一个字典,从代码可以看出来。
3.show(k,*args)
def show(k,*args):
print(k,type(k))
print(args,type(args))
show([11,22],33,44,55,88)
运行结果如下:
[11, 22] <class 'list'> (33, 44, 55, 88) <class 'tuple'>
由上面代码可以看出,我们向函数定义了两个参数,一个是k,一个是*args,我们知道,形参k只能接收一个对象参数,*args可以接收多个参数并且放在一个元组中,下面我们向函数传递了多个参数,看是如何接收的。从运行结果(1)可以看出,形参k接收了参数[11,22];而后面输入的值传递给了*args,并在存放在一个列表中。
4.show(*args,**kwargs)
只要函数有这两个参数那么,可以传递任何形式的实参进来,因为可以接收任意形式的参数,但是我们知道,字典必须是由键值对组成,传递的参数要满足key=value的格式,否则会报错。这点一定要记得,Python中默认给字典传递参数的方法就是键-值对。
def show(*args,**kwargs): print(args,type(args)) print(kwargs,type(kwargs)) show(123,"alex",666,alex="sb",nanyang="degnzhou")
运行结果如下:
(123, 'alex', 666) <class 'tuple'>
{'nanyang': 'degnzhou', 'alex': 'sb'} <class 'dict'>
我们可以看到,前面的元素被放到了一个元组tuple中,后面的元素被放到了一个字典dict中,但是我们一定要记得,*args,一定要在**kwargs前面,不然会报错,顺序一定是单个参数,动态元组,动态字典方式。
下面我们来看一个实例:
def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
l = [11,22,33,44]
d = {"n1":88,"alex":"sb"}
#我们想把列表l传递给形参*args,把字典传递给形参**kwargs,看下面方式是否可以
show(l,d) (1)
#如果向实现上面功能,要进行表示,指定把哪个参数传递给形参*args,另一个参数传递给形参××kwargs
show(*l,**d) (2)
上面代码中,我们在(1)处直接调用参数,但是得到的结果不是我们想要的,我们想要把参数以列表或者字典的形式传给对应的形参,那么必须标明是传递给哪个参数的,相当于默认参数一样。否则只会传递给第一个参数*args,把列表和字典都放在同一个元组中。上面代码的运行结果如下:
运行结果:
([11, 22, 33, 44], {'alex': 'sb', 'n1': 88}) <class 'tuple'>
{} <class 'dict'>
(11, 22, 33, 44) <class 'tuple'>
{'alex': 'sb', 'n1': 88} <class 'dict'>
5.字符串中参数的情况
(1)字符串格式化,向字符串中传递列表参数
s1 = "{0} is {1}."
result = s1.format("alex","sb")(1)
l = ["alex","sb"] (2)
res = s1.format(*l)
print(result)
print(res)
上面,我们有两种向字符串传递参数的方法,方法(1)中我们直接按顺序传递参数给s1,在方法(2)中我们指定一个列表,但是使用*args的形式给字符串s1传递参数。列表是有序的。
(2)向字符串中传递字典形式的参数
s1 = "{name} is {acter}."
result = s1.format(name="alex",acter="sb")
d = {"name":"alex","acter":"sb"}
#向列表中传递字典形式的参数
res = s1.format(**d)
print(result)
print(res)
在上面代码中,我们向字符串中传递了一个字典形式的参数,我们知道字典的格式,在传递给字符串的时候要指定我们传递的参数是一个字典,
因而要使用**d格式,告诉Python。
6.lambda表达式
lambda简单表达式就是函数的简单表示形式:
>>> func = lambda a:a+1 >>> ret = func(99) >>> print(ret) 100
在上面形式中,func是定义一个函数,lambda表示的是我们定义了一个lambad表达式,其中a代表的形参,冒号(:)后面的a+1代表表达式,对
函数进行什么样的处理,然后把结果返回给ret这个变量,调用它的变量。省略了return。
上面形式参数可以有多个,冒号前面是参数,可以多个;冒号后面是函数体。
lambda表达式创建了形参a;函数内容a+1,并把结果返回给调用函数的变量。
以上这篇浅谈function(函数)中的动态参数就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# function函数动态参数
# 多个
# 可以看出
# 放在
# 是由
# 给大家
# 在上面
# 报错
# 的是
# 组中
# 是一个
# 一个函数
# 第一个
# 列表中
# 并在
# 我们可以
# 这两个
# 只会
# 给了
# 希望能
# 可以看到
相关文章:
婚礼视频制作网站,学习*后期制作的网站有哪些?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何访问已购建站主机并解决登录问题?
广州营销型建站服务商推荐:技术优势与SEO优化解析
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何在橙子建站中快速调整背景颜色?
建站主机解析:虚拟主机配置与服务器选择指南
Android自定义listview布局实现上拉加载下拉刷新功能
活动邀请函制作网站有哪些,活动邀请函文案?
详解jQuery停止动画——stop()方法的使用
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
建站VPS能否同时实现高效与安全翻墙?
,怎么在广州志愿者网站注册?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
网站制作报价单模板图片,小松挖机官方网站报价?
建站DNS解析失败?如何正确配置域名服务器?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何打造高效商业网站?建站目的决定转化率
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
定制建站哪家更专业可靠?推荐榜单揭晓
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
如何快速完成中国万网建站详细流程?
小建面朝正北,A点实际方位是否存在偏差?
做企业网站制作流程,企业网站制作基本流程有哪些?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
如何设置并定期更换建站之星安全管理员密码?
建站之星24小时客服电话如何获取?
如何快速搭建高效WAP手机网站吸引移动用户?
建设网站制作价格,怎样建立自己的公司网站?
如何基于云服务器快速搭建个人网站?
网站app免费制作软件,能免费看各大网站视频的手机app?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
青浦网站制作公司有哪些,苹果官网发货地是哪里?
如何用IIS7快速搭建并优化网站站点?
如何配置WinSCP新建站点的密钥验证步骤?
如何快速上传建站程序避免常见错误?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
建站之星如何防范黑客攻击与数据泄露?
如何挑选最适合建站的高性能VPS主机?
网站制作网站,深圳做网站哪家比较好?
如何解决VPS建站LNMP环境配置常见问题?
教学论文网站制作软件有哪些,写论文用什么软件
?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
详解jQuery中基本的动画方法
建站之星ASP如何实现CMS高效搭建与安全管理?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
*请认真填写需求信息,我们会在24小时内与您取得联系。