Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将*(splat)运算符用于打印_Python_Python 2.7 - Fatal编程技术网

Python 将*(splat)运算符用于打印

Python 将*(splat)运算符用于打印,python,python-2.7,Python,Python 2.7,我经常使用Python的print语句来显示数据。是的,我知道'%s%d'('abc',123)方法,以及'{}{}.format('abc',123)方法和'.join('abc',str(123))方法。我还知道splat操作符(*)可以用来将iterable扩展为函数参数。然而,我似乎无法用print语句实现这一点。使用列表: >>> l = [1, 2, 3] >>> l [1, 2, 3] >>> print l [1, 2, 3]

我经常使用Python的
print
语句来显示数据。是的,我知道
'%s%d'('abc',123)
方法,以及
'{}{}.format('abc',123)
方法和
'.join('abc',str(123))
方法。我还知道splat操作符(
*
)可以用来将iterable扩展为函数参数。然而,我似乎无法用
print
语句实现这一点。使用列表:

>>> l = [1, 2, 3]
>>> l
[1, 2, 3]
>>> print l
[1, 2, 3]
>>> '{} {} {}'.format(*l)
'1 2 3'
>>> print *l
  File "<stdin>", line 1
    print *l
          ^
SyntaxError: invalid syntax
>l=[1,2,3]
>>>l
[1, 2, 3]
>>>打印l
[1, 2, 3]
>>>“{}{}{}”。格式(*l)
'1 2 3'
>>>打印*l
文件“”,第1行
打印*l
^
SyntaxError:无效语法
使用元组:

>>> t = (4, 5, 6)
>>> t
(4, 5, 6)
>>> print t
(4, 5, 6)
>>> '%d %d %d' % t
'4 5 6'
>>> '{} {} {}'.format(*t)
'4 5 6'
>>> print *t
  File "<stdin>", line 1
    print *t
          ^
SyntaxError: invalid syntax
>t=(4,5,6)
>>>t
(4, 5, 6)
>>>打印t
(4, 5, 6)
>>>“%d%d%d”%t
'4 5 6'
>>>“{}{}{}”。格式(*t)
'4 5 6'
>>>打印*t
文件“”,第1行
打印*t
^
SyntaxError:无效语法
我错过什么了吗?难道这根本不可能吗?接下来的打印内容是什么?表示表达式的逗号分隔列表跟随
print
关键字,但我猜这与列表数据类型不同。我在网上做了大量的挖掘,没有找到一个明确的解释


我使用的是Python2.7.6。

print
是Python2.x中的一条语句,不支持
*
语法。您可以从中列出的
print
语法中看到这一点:

然后使用:

print(*l)
演示:


好的,看来这是语言定义不允许的。我希望我遗漏了一些东西,
*
操作符将作为计算
print
表达式的一部分应用,并且结果将以某种方式与
print
兼容。换句话说,我希望
*iterable
将被
print
解释为一个逗号分隔的表达式列表,其中每个表达式都是iterable的一个元素。我猜这意味着这些表达式中的每一个都会被计算,这可能导致代码注入,或者更糟。也许这就是原因。
*
语法实际上是;它不是一个独立的操作员
print
不支持它,因为语言设计者没有决定这样做。最近有人提议将
*
语法扩展到Python的更多领域,但它尚未实现。这就进一步解释了问题。谢谢+1.
from __future__ import print_function
print(*l)
>>> # Python 2.x interpreter
>>> from __future__ import print_function
>>> l = [1, 2, 3]
>>> print(*l)
1 2 3
>>>