python函数参数的理解
2018-07-19 05:47:26来源:博客园 阅读 ()
Python函数参数的名称主要有:位置参数、关键字参数、默认参数、可变参数(可变数量参数)四种。这四种参数使用起来有什么区别呢?这篇博客主要想谈谈自己对这个问题的理解。注: 在中国,大学专业中工科类基本上都会开设C/C++课程,以此为介绍的起点。
在C语言中,定义函数如下:
/* 函数返回两个数中较大的那个数 */
int max(int num1, int num2)
{
/* 局部变量声明 */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
在调用函数 max() 时,需要将 2 个具体的数值(实参)赋给 max() 函数,例如 max(2,5),如果少于或多于 2 个参数都不可以。在Python 中,有相同的函数参数形式,称为:位置参数,使用方式如下:
1 #!/usr/bin/python
2
3 # Function definition is here
4 def printinfo( name, age ):
6 print "Name: ", name
7 print "Age ", age
此处 name 与 sex 必须输入相同数量(2个)有序的两个量,这是 Python 中第一个基本的输入参数形式。 还有第二种么? 是的,那就是:关键字参数 使用方式如下:
1 #!/usr/bin/python
2
3 # Function definition is here
4 def printinfo( name='MAX', age='18' ):
5 print "Name: ", name
6 print "Age ", age
关键字参数不同于位置参数的地方在于:输入参数个数可以是 0、1、2个,即小于等于2 。此处如果输入 1 个参数 name ,age 不输入则 name 为关键字参数,age为 默认参数 那位置参数与关键字参数两种类型的参数是否可以组合使用呢?可以,使用原则如下:
1、位置参数必须在关键字参数的前
2、多个关键字参数之间不存在先后顺序
# 以下是用关键字参数正确调用函数的实例
# print_hello('tanggu', sex=1)
# print_hello(name='tanggu', sex=1)
# print_hello(sex=1, name='tanggu')
# 以下是错误的调用方式
# print_hello(1, name='tanggu')
# print_hello(name='tanggu', 1)
# print_hello(sex=1, 'tanggu')
到目前为止,参数个数都限定在函数定义参数个数之下,那有没有办法让可输入参数超出这个范围呢?即让 max(a,b)可以接受多于 2 个参数,Python提出了一种方案:在参数中引入元祖(tuple)和字典(dict)概念,得到如下的参数定义:
1 def func(*args, **kwargs): 2
将位置参数包裹(paking)为元祖集合,将关键字参数包裹为字典集合,以允许接收更多的参数,从而得到了可变数量参数,举例如下:
元祖:
1 def func(*args):
2 sum = 0
3 for x in args:
4 sum += x
5 return sum
6
7 print(func(1,2,3)) //6
8 //将list或tuple内全部元素作为可变参数
9 L = [1,2,3,4]
10 print(func(*L)) //10
字典:
def func(a,b,**kw):
sum = a+b
print(a,'+',b,'=',sum,kw)
func(2,3,color="black",phone="vivo")
// Out:2 + 3 = 5 {'color': 'black', 'phone': 'vivo'}
//先组装dict,再作为关键字参数传进去
desc = {'color': 'black', 'phone': 'vivo'}
func(2,3,**desc)
// Out:2 + 3 = 5 {'color': 'black', 'phone': 'vivo'}
总结:两种基本参数类型为:位置参数和关键字参数。通过有初值的关键字参数得到默认参数,通过将基本类型参数的包裹得到可变数量参数 。
致谢:
文章引用了以下博客的例子,感谢你们的分享
引用:
1、https://segmentfault.com/a/1190000013117996
2、https://www.cnblogs.com/VseYoung/p/python_def.html
3、https://www.tutorialspoint.com/python/python_functions.htm
4、https://www.cnblogs.com/frankyou/p/5718888.html
5、http://www.runoob.com/cprogramming/c-functions.html
2018-07-19 12:33:52
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:python编辑购物车
下一篇:python之字符串函数
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash