前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python函数中单独一个星号或斜线作为形参的含义

Python函数中单独一个星号或斜线作为形参的含义

作者头像
Python小屋屋主
发布2018-04-16 16:09:10
3.1K0
发布2018-04-16 16:09:10
举报
文章被收录于专栏:Python小屋Python小屋

在函数定义时,位于*parameter或单独一个星号*之后的所有参数都只能以关键参数的形式进行传值,不接收其他任何形式的传值

>>> def demo(a, b, *, c):#参数c必须以关键参数进行传值

print(a+b+c)

>>> demo(1, 2, c=3) #正确

6

>>> demo(1, 2, 3) #错误,引发异常

TypeError: demo() takes 2 positional arguments but 3 were given

>>> def demo(a, b, *p, c):#参数c必须以关键参数进行传值

print(a+b+c+sum(p))

>>> demo(1, 2, 3, 4, c=5) #正确

15

>>> demo(1, 2, 3, 4, 5) #错误,引发异常

TypeError: demo() missing 1 required keyword-only argument: 'c'

另外如果用help()函数查看sum()函数的帮助文档时,会发现sum()函数的最后一个参数是斜线,实际上这个斜线并不是sum()函数的参数,只是用来表明这个函数只接收位置参数,而不允许以关键参数的形式进行传值,如果遇到其他函数或对象方法显示这样的帮助文档也表示同样的含义。这样的函数是用C开发的,并对参数传值形式做的要求,在Python中并不允许定义这样的函数。感谢浙江温州永嘉县教师发展中心应根球老师提供的参考资料。这涉及到“Argument Clinic”的概念,感兴趣的朋友可以查阅有关资料。

>>> help(sum) #查看sum()函数的帮助

Help on built-in function sum in module builtins:

sum(iterable, start=0, /)

Return the sum of a 'start' value (default: 0) plus an iterable of numbers

When the iterable is empty, return the start value.

This function is intended specifically for use with numeric values and may

reject non-numeric types.

>>> sum([1, 2, 3], 4) #按位置参数对start进行传值

10

>>> sum([1, 2, 3], start=4)#不允许使用关键参数,引发异常

TypeError: sum() takes no keyword arguments

>>> def demo(a, b, /): #在Python中不允许这样定义函数

SyntaxError: invalid syntax

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档