在字符串格式化时,当单独解包元组时出现带星号表达式的语法错误。

9 浏览
0 Comments

在字符串格式化时,当单独解包元组时出现带星号表达式的语法错误。

我在Python 3.5.2中使用REPL尝试了以下内容:

>>> a = (1, 2)

>>> '%d %d %d' % (0, *a)

'0 1 2'

>>> '%d %d %d' % (*a, 3)

'1 2 3'

>>> '%d %d' % (*a)

File "", line 1

SyntaxError: 在此处不能使用星号表达式

>>>

我的问题是,为什么会出现这个错误?

更严肃一点的语气:我想要一个解答或参考,详细说明使用星号表达式的各种情况,因为有时我会对其行为感到惊讶...

补充说明

为了反映紧随我的问题的一些启发性评论,我添加了以下代码

>>> '%d %d' % (, *a)

File "", line 1

'%d %d' % (, *a)

^

SyntaxError: 无效的语法

>>> '%d %d' % (*a,)

'1 2'

>>>

(在发布原始问题之前,我已经尝试了(, a)部分,但我忽略了它,因为错误与星号无关。)

在Python ≥ 3.5中有一种语法“只是起作用”,但我仍然希望能够理解一些背后的原理。

0