小白求问函数类型

4oclhashcat 2018-11-10 06:30:04
在Python中定义函数……但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)


在f2中,可变参数(f2视为空)* 与命名关键字参数 **kw之间多了一个d,请问这个怎么解释呢
...全文
86 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wopabe 2018-12-04
  • 打赏
  • 举报
回复
指针的指针?
smith6036 2018-12-04
  • 打赏
  • 举报
回复
*以后的参数传参必须使用d=4这种格式
  • 打赏
  • 举报
回复
首先这个定义没有问题, 单独的*是可以使用的, 这时候*的作用不是表示参数, 而是表示其后面的参数必须使用关键字传入 所以你这个函数的调用是这样的 f2('a', 'b', 1, d = 'aa', m = 1, n = 2) 输出结果 a = a b = b c = 1 d = aa kw = {'m': 1, 'n': 2}
khq溪风 2018-11-14
  • 打赏
  • 举报
回复
没有单独一个星号*作为参数的吧,星号要与变量一块的*params
欢乐的小猪 2018-11-12
  • 打赏
  • 举报
回复
def f2(a, b, c=0, *, d, **kw):
这个应该是
def f2(a, b, c=0, *d, **kw):
JJandYY135 2018-11-12
  • 打赏
  • 举报
回复
你理解错了,你再好好看看廖雪峰那个网站,不是多了一个d,而是因为这个d在*后面,所以这个d是命名关键字参数。*后面的参数叫做命名关键字参数(也就是你调用f2()的时候必须传递这个参数,并且必须的这么写:d=xxx),**kw是关键字参数。
JJandYY135 2018-11-12
  • 打赏
  • 举报
回复
引用 3 楼 欢乐的小猪 的回复:
def f2(a, b, c=0, *, d, **kw):
这个应该是
def f2(a, b, c=0, *d, **kw):
这两个意思不一样: 第一个*,d表示命名关键字参数, 第二个*d表示可变参数。
丶地平线 2018-11-12
  • 打赏
  • 举报
回复
*变量名1:表示收集多余的位置传参,**变量名2:收集多余的字典传参,只有一个*表示,后面的参数在传参时,必须要关键字传参。所以d在调用函数时,必须采用关键字传参的方式。里面还有一个问题。那就是c的位置不对,c为缺省参数,必须在最右边,
尘封记忆 2018-11-11
  • 打赏
  • 举报
回复
你是不是哪里搞错了,第一个*和d之间的那个逗号应该是不存在的,否则,你的那个c=0的赋值就不应该在中间了。 至少我是没有遇到过。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧