python参数
参数
python的函数具有很灵活的参数形式,可以是:
位置参数(最常见的参数,可以使用tuple代替),
默认参数(给默认值),
可变参数(参数的个数可以改变,传入的其实是list或者tuple),
关键字参数(传入的其实是dict)。
位置参数
#参数 #位置参数 默认参数 #计算x的n次方 def power(x,n=2): s=1 while n>0: s=s*x n=n-1 return s print(power(3)) 》9 print(power(4,4)) 》256
默认参数
#默认参数 小心有坑 def add_end(L=[]): L.append('end') print( L) add_end() 》['end'] add_end() 》['end', 'end']
这里第二次调用方法的时候输出不再是['end']而是['end', 'end']
定义默认参数要牢记一点:默认参数必须指向不变对象!
要修改上面的例子,我们可以用None
这个不变对象来实现:
def add_end(L=None): if L is None: L=[] L.append('end') print( L) add_end() 》['end'] add_end() 》['end']
这样无论调用多少次都输出['end']
可变参数
在参数前面加一个星号*,函数内部参数接受到的是一个tuple
#可变参数 #计算a2 + b2 + c2 + …… def calc(*arg): sum=0 for n in arg: sum=sum+n*n return sum print(calc(1,2,3,4)) 》30
也可以直接把一个list或者tuple的元素变成可变参数传进去,在变量前面加一个星号*
#把list或者tuple做可变参数 num=list(range(1,4)) print(calc(*num)) 》14
关键字参数
参数可以是0个或任意带参数名的参数,这些参数在函数内部自动组成为一个dict
#关键字参数 def person(name,age,**kw): print('name:',name,' age:',age,'other:',kw) person('Peter',35) 》name: Peter age: 35 other: {} person('Peter',35,city='SH',sex='F') 》name: Peter age: 35 other: {'city': 'SH', 'sex': 'F'} #把dict做关键字参数 extra={'city':'SH','job':'Engineer'} person('Peter',35,**extra) 》name: Peter age: 35 other: {'city': 'SH', 'job': 'Engineer'}
要注意定义可变参数和关键字参数的语法:
*args
是可变参数,args接收的是一个tuple;
**kw
是关键字参数,kw接收的是一个dict。
可变参数既可以直接传入:func(1, 2, 3)
,又可以先组装list或tuple,
再通过*args
传入:func(*(1, 2, 3))
;
关键字参数既可以直接传入:func(a=1, b=2)
,又可以先组装dict,
再通过**kw
传入:func(**{'a': 1, 'b': 2})
。
请注意: 参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。 对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
本文带大家简单理解阿里巴巴Java开发手册中的规约内容以及P3C项目,可以帮助开发者扫描出所有潜在的代码隐患。在中间也聊了一些对于不同语言设计的理解,如何去看待语言的设计,其实是我们去学习一个语言的核心。 演讲嘉宾简介: 澳明,阿里巴巴高级开发工程师。 本次直播视频精彩回顾,戳这里! PPT下载 以下内容根据演讲嘉宾视频分享以及PPT整理而成。 本次的分享主要围绕以下三个方面: 一、手册简介 二、聊聊语言 三、P3C项目 一、手册简介 下面主要从三个方面介绍阿里巴巴为什么需要这个Java开发手册。第一个方面,其实是协作效率的问题。众所周知,秦朝统一时期,推出了“车同轨,书同文”的法令,事实上,这个法令背后的目的是让整个国家人民做事的方式进行统一。那么在现在,比如对于一个公司而言,一些规范的不一致可能会导致很多问题,不仅仅是个人与个人之间,甚至让部门与部
- 下一篇
python:函数的高级特性
很多语言中,都允许把函数本身做为参数,传递给其它参数:即所谓的高阶函数。python中也有类似特性: 一、map/reduce、filter、sorted hadoop里的map-reduce思想在python里已经变成内置函数了。map是将某个函数逐一作用于列表中的每个元素。reduce则先从列表中取头2个元素,传到指定函数,然后将计算结果与余下元素依次重复,直到List处理完。 1.1 map示例:(将List中的所有元素*10) def fn_map(x): print("fn_map->", x) return 10 * x L = [3, 4, 6, 8] print(list(map(fn_map, L))) print("\n") 输出: fn_map-> 3 fn_map-> 4 fn_map-> 6 fn_map-> 8 [30, 40, 60, 80] 结合map,我们再把reduce函数加上(最终效果:将所有元素*10再平方,最终得出 “平方和”的"平方根") def fn_sqrt(x, y): print("fn_sqrt-&g...
相关文章
文章评论
共有0条评论来说两句吧...