为什么不将字符视为整数?

时间:2015-12-09 15:21:37

标签: python

我总是误以为输入原始字母(alphabet = "abcdefghijklmnopqrstuvwxyz")的时间比我想象的要短:

alphabet = list(chr(i) for i in range(ord('a'), ord('z') + 1))

当然,您也可以from string import ascii_lowercase,但这与问题无关。为什么字符无效输入range函数?以下代码有效,证明range可以使用实现__index__函数的任何值:

class Doubler(object):
    def __init__(self, value):
        self.value = value * 2

    def __int__(self):
        return self.value
    __index__ = __int__

for i in range(Doubler(5), Doubler(10)):
    print(i)

[10,20]是逐行打印的,这意味着它显然有效。那么为什么字符不会从ord函数返回__index__?显然,对于长度超过长度1的字符串,这不起作用,但ord也不行。我有什么理由在这里失踪吗?我们可以range('a', 'z' + 1),这是更清晰的IMO。

1 个答案:

答案 0 :(得分:0)

因为' a'和' z'是字符串,为什么他们应该使用第一个符号的ord作为__index__?另请注意,抽象字符串可以为空。