在Python shell中输入以下命令,我仍然感到困惑:
>>> 'n'
'n'
>>> print('n')
n
第一个输出的'n'
是什么意思?另一个n
又代表什么?为什么Python不会像print('n')
一样打印'n'
作为输出?
我认为print('n')
的意思是:我(Python)把n
作为字符打印出来
那么第一个输出呢?如果>>> 'n'
表示相同的含义,为什么它不会直接打印n
呢?
在Python shell中输入以下命令,我仍然感到困惑:
>>> 'n'
'n'
>>> print('n')
n
第一个输出的'n'
是什么意思?另一个n
又代表什么?为什么Python不会像print('n')
一样打印'n'
作为输出?
我认为print('n')
的意思是:我(Python)把n
作为字符打印出来
那么第一个输出呢?如果>>> 'n'
表示相同的含义,为什么它不会直接打印n
呢?
您正在以交互模式运行Python解释器,该模式会将值“回显”给您。表达式会被计算,如果它们返回的不是None
,那么解释器会执行以下操作:
print(repr(result))
print()
直接将值转换为字符串(使用str()
函数的结果),然后写入终端输出。但对于字符串值,它已经是一个字符串对象,所以没有区别。'n'
,Python 解释器会忽略那行,因为它不会改变任何状态。然而,print('n')
会将字符串写入控制台或终端。repr()
函数,你可以区分不同类型的对象。尝试打印整数数字1
和包含数字1
的字符串 "1"
:>>> print(1)
1
>>> print("1")
1
你无法区分这两个。但它们的表现确实不同:
>>> 1
1
>>> "1"
'1'
大多数Python标准类型的表示法都使用一种可以直接在您的Python代码中重用的符号。
你应该首先理解在Python中,所有的东西都是对象。这意味着'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
它只是回显您的输入(一个字符串)。当您 print
n 时,它会输出您的字符串的值。
print('n')
会打印出一些内容,但在文件中只有'n'
则不会有任何反应。'n'
打印'n'
。但这是交互式提示符所做的事情,而不是代码所做的事情。