当前位置: 首页 > 面试题库 >

在打印中使用*(splat)运算符

古刚洁
2023-03-14
问题内容

我经常使用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

使用元组:

>>> 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

我想念什么吗?这根本不可能吗?接下来到底是什么print?该文档说该print关键字后面是逗号分隔的表达式列表,但是我想这与列表数据类型不同。我在SO和Web上做了很多挖掘工作,却没有找到明确的解释。

我正在使用Python 2.7.6。


问题答案:

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

print_stmt :: =“ print”([expression(“,” expression)* [“,”]]
                | “ >>”表达式[(“,”表达式)+ [“,”]])

请注意*print关键字之后如何没有使用选项。

然而,*语法 支持内部函数调用,它只是恰巧print是在Python
3.X的功能
。这意味着您可以从导入__future__

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
>>>


 类似资料:
  • 问题内容: 有人知道为什么不能在涉及迭代器/列表/元组的表达式中使用一元()运算符的原因吗? 为什么只限于功能解压缩?还是我认为这是错误的? 例如: 操作员为何不: 而当运算符与函数调用一起使用时,它的确会扩展: 使用列表时,和之间存在相似之处,而使用其他类型扩展列表时则没有相似之处。 例如: 问题答案: 如 PEP 448中 所述,已在Python中添加了对列表,字典,集合和元组文字进行解包的功

  • 本文向大家介绍Ruby数组和splat(*)运算符,包括了Ruby数组和splat(*)运算符的使用技巧和注意事项,需要的朋友参考一下 示例 的*操作者可用于解压缩变量和数组,使得它们可以作为一个独立的参数的方法进行传递。 如果尚未将单个对象包装在Array中,则可以使用它: 在上面的示例中,该wrap_in_array方法接受一个参数value。 如果value为Array,则将其元素解压缩,并

  • 问题内容: 如何覆盖解压缩语法和的结果? 例如,您能否以某种方式创建行为如下的对象: 注意: 迭代通过(“ for x in something”)从* splat解包返回不同的元素。 我查看了和,但是这些函数仅涉及两个操作数(如和)的用法,并且似乎与splat运算无关。 问题答案: 迭代对象,并将其元素用作参数。迭代对象的,并使用(相当于括号表示法)来获取键值对。要进行定制,只需使您的对象可迭代

  • 我必须使用Java通过热敏打印机打印收据。我已经完成了所有工作。我的程序从数据库中获取数据,并使用特殊字符、制表符和\n转换为一个字符串。然后将字符串传递给另一个将其转换为图形的方法。 问题是当我点击打印按钮时,白纸就出来了。我注意到我的字符串的前4-5个字符被打印在纸币最末端右上角的最后一行。我的打印机是爱普生TM-T81。 打印账单的方法是: 问题是什么?我该如何解决?我认为我没有在drawS

  • 在我的项目中,客户需要使用POS打印机打印收据,这可以使用JAVA POS来完成。我在网上搜索没有任何有用的材料,但发现 1.javapos 2.jpos 可以有人请指导我应该进行JAVA POS或JPOS。 该应用程序基于Java Swing desktop而不是基于web。 真的坚持这一点,任何帮助都是非常有用的

  • 我通过使用PDFiumSharp将每页转换为PNG图像来打印PDF文件。接下来,我将此图像绘制为图形。 问题是打印机接收到的数据非常大,整个过程运行缓慢。我试图在Windows上使用lpr命令。它可以直接处理PDF文件,但我的应用程序需要支持双面打印、不同的纸张来源等,这在lpr中是不可用的。 如何使用System. Drawing. Printig(或其他提供类似功能的东西)打印PDF而不转换为