Python 2.7.9打印语句,列表奇怪输出

时间:2016-05-05 10:37:06

标签: python

为什么只有字符串应该

时才会打印打印功能中的整个参数以及paranthesis

这是Python 2.7.9

import os

alist = [ 'A' ,'B']

print('Hello there')
print('The first item is ',alist[0])
print('Good Evening')

root@justin:/python# python hello.py
Hello there
('The first item is ', 'A')
Good Evening

3 个答案:

答案 0 :(得分:8)

在python 2中print不是函数,它是一个声明。当你写

print('The first item is ',alist[0])

它实际上意味着“给我打印2个元素的元组:'The first item is 'alist[0]

它相当于

a = ('The first item is ',alist[0])
print a

如果你只想打印字符串,你应该删除括号:

print 'The first item is ',alist[0]

编辑: 正如评论中的人所说,你也可以添加

from __future__ import  print_statement

这将使print成为python 3中的函数,您的示例将按预期工作而不进行任何更改。

但我认为理解两种情况下的情况都很有用。

答案 1 :(得分:1)

记住你在python 2中使用python 2.7.x,print是一个语句,而不是一个函数。 你可能会问为什么

print('Good Evening')

无法打印

('Good Evening')

你只传递了1个字符串参数,因此print语句理解需要打印字符串而不是括号。

当你做

print ('The first item is ',alist[0])

打印整个输出,认为字符串的不同部分有,作为分隔符,因此输出为

('The first item is ', 'A')

在处理python 2时删除括号,因为它不是面向函数的版本

答案 2 :(得分:1)

之前的答案已经解释了

print('The first item is ', alist[0])
Python 2中的

等同于

print ('The first item is ', alist[0])

所以它打印了两个项目的元组。这是因为print是Python 2中的语句,而不是函数,因此print后面的括号被解释为表示功能调用。

在Python中,由逗号分隔的几个项组成的表达式创建一个元组。在某些情况下,需要括号将元组分组为一个单元;并且print语句是其中一种情况,否则逗号分​​隔序列中的每个项都被视为print语句的单独参数。

元组的标准字符串表示形式打印括号括号和每个元组项的repr。因此,元组中的任何字符串项都使用其引号打印,并且各种转义序列用于表示非ASCII字符。

如果您希望在后续版本的Python 2中使用print()语法以使您的代码与Python 3兼容,那么您应该添加

from __future__ import print_function

作为脚本中的第一个可执行语句。这将掩盖print语句,并允许print名称引用print函数。这是一个简短的演示,在Python 2.6.6上运行。首先,没有导入:

print('one', 'two\n', 'three')    

<强>输出

('one', 'two\n', 'three')

随着导入:

from __future__ import print_function
print('one', 'two\n', 'three')

<强>输出

one two
 three

FWIW,你可以这样做

from __future__ import print_function, division

所以你也得到了/除法运算符的Python 3式行为。