我对函数参数列表中的尾随逗号感到困惑:
def f( *args, ): pass
给我一个SyntaxError
例外。在python 3中,即便如此:
def f( *, arg = 1, ): pass
引发语法错误异常。两者都指向闭括号。
删除尾随的逗号,一切都很安静。
我在https://docs.python.org/3/reference/compound_stmts.html#function-definitions上摸不着头脑,但它在某种程度上超出了我(也可能是错误的...至少,在我的浏览器渲染中我无法将parameter_list
定义中的最后一个右括号配对) 。
难道我做错了什么?
我是
def f(*,
a: "doc A" = 1,
b: "doc B" = 2,
c: "doc C" = 3,
d: "doc D" = 4,
# ... and maybe more,
)
类型的人,这个问题有点让我烦恼(也许这是错误的部分,我应该成为, a: "doc A" = 1
类型的人 - 但它对我来说看起来很奇怪。)
在Gentoo ebuilds dev-lang / python 2.7.12和3.5.2(来自http://www.python.org)中使用python。
答案 0 :(得分:2)
支持在全能参数 was added in python 3.6 后面使用尾随逗号。
3.5 中不支持它解释了您的 print("Function for hiding the cell")
hide_toggle()
。
答案 1 :(得分:-2)
参数列表中的尾随逗号被视为以逗号分隔的多个值。
a = (4)
type (a)
>> output: int
a = (4,)
type (a)
>> output: tuple
因此,如果函数的参数有一个尾随逗号,python认为应该有一个值但是没有,所以它会引发语法错误。
另一方面,列表中的尾随逗号很好。
list1 = [ 0, 1, 2, 3, ]
>> totally fine