为啥 Python 返回整数而不是字符串 [关闭]

Posted

技术标签:

【中文标题】为啥 Python 返回整数而不是字符串 [关闭]【英文标题】:Why Python is returning integer instead of string [closed]为什么 Python 返回整数而不是字符串 [关闭] 【发布时间】:2017-04-05 03:12:54 【问题描述】:
class Clock(object):
    def __init__(self, time):
        self.time = time
    def print_time(self):
        time = '6:30'
        print(self.time)

clock = Clock('5:30')
clock.print_time()

为什么打印5:30 而不是'5:30'

【问题讨论】:

5:30 不是整数。 引号不是字符串的一部分,5:30 不是整数 【参考方案1】:

在编写 Python 程序时,字符串需要放在引号内,以便解析器知道它们是字符串。所以,你输入

>>> time = 5:30
  File "<stdin>", line 1
    time = 5:30
            ^
SyntaxError: invalid syntax
>>>
>>> time = '5:30'
>>> 

但是 python 并没有真正将引号本身存储在字符串中。它创建一个类型为str 的对象,其值为5:30。当您打印字符串时,它会打印值,而不是让 python 解析器工作所需的引用表示。

Python 对象有两种显示自身的方法。 __str__ 返回预期的人类可读字符串,而__repr__ 返回通常包含类型信息的程序员友好字符串。对于字符串,它包括引号。如果您出于某种原因确实想要引号,可以使用repr

>>> time = '5:30'
>>> print(time)
5:30
>>> print(type(time))
<class 'str'>
>>> print(repr(time))
'5:30'
>>> 

【讨论】:

【参考方案2】:

""'' 只是分隔字符串,它们不是字符串的一部分,因此不会被打印。 程序在此处正确打印字符串。 (5:30 无论如何都不是整数)

PS:我不知道print_time 中的time = '6:30' 是否应该更改Clock 中的时间属性,但如果是,它应该是self.time = '6:30'。当前指令没有任何作用。

【讨论】:

以上是关于为啥 Python 返回整数而不是字符串 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥要在 Python 中隐式检查是不是为空? [关闭]

为啥 ArgumentParser 返回命名空间而不是字典? [关闭]

为啥 array_pop() 返回数组的最后一项而不是删除它? [关闭]

为啥整数除法产生一个浮点数而不是另一个整数?

一个整数而不是字符串?为啥? [复制]

为啥 C 字符文字是整数而不是字符?