我对'n'和print('n')之间的区别感到困惑

时间:2013-12-09 14:23:47

标签: python string

在Python shell中输入此命令时我仍然感到困惑:

>>> 'n'
'n'
>>> print('n')
n

'n'(第一输出)是什么意思?另一个n是什么意思?为什么Python只打印n作为'n'的输出与print('n')生成的相同?

我认为print('n')表示:我(Python)打印n作为角色

那么第一个怎么样?如果>>> 'n'表示相同,为什么不打印n

4 个答案:

答案 0 :(得分:5)

您正在interactive mode中运行python解释器,其中 echos 值为您。表达式将被评估,如果它们返回None以外的其他内容,则解释器将执行以下操作:

print(repr(result))

这是您看到的'n'

另一方面,

print()直接写入终端输出,将值转换为字符串(str()函数的结果,但对于字符串值,没有区别它已经 一个字符串对象。)

这与在脚本中运行Python代码不同;没有提示,如果只将'n'放在一行,Python解释器就会忽略该行,因为它不会改变任何状态。另一方面,print('n')仍会将字符串写入您的控制台或终端。

交互模式可以帮助您弄清楚做什么的python表达式,并且使用repr()可以区分不同类型的对象。尝试打印1"1",这是一个整数,以及一个数字为1的字符串:

>>> print(1)
1
>>> print("1")
1

你无法分辨这两者之间的区别。但他们的代表 确实不同:

>>> 1
1
>>> "1"
'1'

大多数Python标准类型的表示将使用可以在Python代码中重复使用的符号。

答案 1 :(得分:0)

它只是回显您的输入(字符串)。当你print n时,它会输出你的字符串的值。

答案 2 :(得分:0)

如果要将它放在.py文件中并从命令行执行,那么print('n')会打印一些内容,但文件中只有'n'不会执行任何操作。

交互式提示稍微有点混乱,因为如果您编写的表达式的值不是None,则会打印其表示形式。这就是'n'在这种情况下打印'n'的原因。但这是交互式提示所做的事情,而不是代码所做的事情。

答案 3 :(得分:0)

你应该先了解python中的所有内容都是OBJECT。这意味着'n'是一个对象,当print它你调用一个对象'n'的函数。(OBJECT.__str__())。

class Human:
    def __init__(self,name,ge,age):
         self.ge = ge
         self.age = age
         self.name = name
    def __str__(self):
         print "This is",self.name
         print "age = ",self.age
         print "gender = ".self.ge

boy = Human("Tom", "M", 12)
print boy