浅谈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设置tmpfs来加速项目的教程
Apr 17 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
Python3控制路由器——使用requests重启极路由.py
May 11 Python
django ajax json的实例代码
May 29 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
Python 抓取微信公众号账号信息的方法
Jun 14 Python
Python底层封装实现方法详解
Jan 22 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 Python
Python3压缩和解压缩实现代码
Mar 01 Python
Pandas-DataFrame知识点汇总
Mar 16 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
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
js不是基础的基础
2006/12/24 Javascript
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
vue.js表格分页示例
2016/10/18 Javascript
js模拟支付宝密码输入框
2017/04/11 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
nginx配置React静态页面的方法教程
2017/11/03 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
Python在线运行代码助手
2016/07/15 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
浅析matlab中imadjust函数
2020/02/27 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
eBay加拿大站:eBay.ca
2019/06/20 全球购物
会计出纳员的自我评价
2014/01/15 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
微笑服务标语
2014/06/24 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
党员心得体会范文2016
2016/01/23 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python