浅谈function(函数)中的动态参数


Posted in Python onApril 30, 2017

我们可向函数传递动态参数,*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(函数)中的动态参数就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python list中append()与extend()用法分享
Mar 24 Python
python绘图方法实例入门
May 19 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
Python中函数参数设置及使用的学习笔记
May 03 Python
如何将python中的List转化成dictionary
Aug 15 Python
简单实现python收发邮件功能
Jan 05 Python
python正则表达式之对号入座篇
Jul 24 Python
详解Django中间件的5种自定义方法
Jul 26 Python
python删除字符串中指定字符的方法
Aug 13 Python
python之列表推导式的用法
Nov 29 Python
Python实现哲学家就餐问题实例代码
Nov 09 Python
python基础之//、/与%的区别详解
Jun 10 Python
python脚本爬取字体文件的实现方法
Apr 29 #Python
Python在图片中添加文字的两种方法
Apr 29 #Python
Python实现对字符串的加密解密方法示例
Apr 29 #Python
Python实现通过文件路径获取文件hash值的方法
Apr 29 #Python
python基于pyDes库实现des加密的方法
Apr 29 #Python
Python简单实现Base64编码和解码的方法
Apr 29 #Python
Python变量和字符串详解
Apr 29 #Python
You might like
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
php mysql索引问题
2008/06/07 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
教师师德演讲稿
2014/05/06 职场文书
入职担保书范文
2014/05/21 职场文书
物理课外活动总结
2014/08/27 职场文书
个人收入证明模板
2014/09/18 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
2014年党建工作总结
2014/11/11 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
回复函格式及范文
2015/07/14 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书