频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
Python函数的参数解析
2018-08-29 14:44:20           
收藏   我要投稿

1. 位置参数

比如power(x,y)中的x和y就是一个位置参数,调用函数时按位置顺序赋值给参数x和y。

2. 默认参数

当定义多个参数时,在调用函数时部分参数可能不需要传值,就需要将该参数赋一个默认值,比如:

def child_info(name,gender,age=6,city='Chengdu'):

 pass

当不需要提供年龄和城市,只提供必需的两个参数,调用结果就是默认值;只有和默认参数不一致的学生才需要提供。注:当不按顺序提供参数时,调用需提供参数名,比如:child_info('Adam','male',city='Tianjing'),此时age仍然使用默认值。

定义默认参数要牢记一点:默认参数必须指向不变对象!

3. 可变参数

定义函数的参数个数不固定时,而定义函数必须要输入确定的参数,此时普通做法是通过作为list或tuple传进来,但此方法不实用可演变为在参数前面加一个*号。在函数内部,参数接收到的仍是一个tuple,当调用该函数时,可以传入任意的参数,包括0个参数。比如:

def cal(*numbers)

 sum=0

 for n in numbers:

  sum=sum+n*n

  return sum

计算1的平方+2的平方时:cal(1,2) ----而不是写成cal([1,2])。

如果已有一个list或tuple(如:nums=[1,2,3],要调用一个可用参数的话可以这样写:cal(nums[0],nums[1],nums[2])

总结:*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。

4. 关键字参数

允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组长为一个dict。比如:

def person(name,age,**kw):

 print(name,age,kw)

即表示除了name和age是必选参数外,还接受关键字参数kw。

1)在调用函数时可以只传入必选参数:person('Lily',30)

2)也可传入任意个数的关键字参数:person('Bob',35,city='Beijing')或person('Adam',45,gender='M',job='Tester')

3)如果已有一个dict(如:extra={'city':'Beijing','job':'Tester}),要调用一个关键字参数的话可以这样写:person(Jack',22,**extra)

总结:“”extra表示把extra这个dict的所有key-value用关键字参数传入到函数**kw参数,kw就获得了一个dict。

5.命名关键字参数

是关键字函数的补充使用,当传入任意含参数名的参数时,需要在函数内部对传入的参数通过kw检查。当需要限制关键字参数的名字时,可以用命名关键字参数。用法:参数中需要一个特分隔符*,*后面的参数被视为命名关键字参数。

6.参数组合

对以上参数类型组合使用,除了可变参数和命名关键字参数无法混合。注:参数定义的顺序:必选参数,默认参数,可变参数/命名关键字参数,关键字参数。

总结:对于任意函数,都可以通过类似func(*args,**kw)的形式调用它,无论它的参数是如何定义的。*args是可变参数,接收的是一个tuple;**kw是关键字参数,接收的是dict。

点击复制链接 与好友分享!回本站首页
上一篇:集合框架解析
下一篇:Linux下命令Is和命令dir的区别解析
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站