输入原始字母表(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]是逐行打印的,这意味着它可以清晰地工作。那么为什么字符不从__index__
函数返回它们的ord
?显然,这对长度大于1的字符串不起作用,但ord
也不起作用。我在这里失踪有什么原因吗?我们可以有range('a', 'z' + 1)
,这在我看来要清楚得多
因为“a”和“z”是字符串,为什么它们应该使用第一个符号的ord作为
__index__
?还要注意抽象字符串可以为空。你知道吗相关问题 更多 >
编程相关推荐