是否可以在Python中处理任意大的字符串?(通过*运算符创建)

Chr*_*ris 6 python string

我们可以使用*运算符构建固定结构但任意长度的字符串,具体如下:

length = 10
print "0" * length
Run Code Online (Sandbox Code Playgroud)

这会返回预期的结果0000000000.当长度过大时会出现问题,导致溢出错误:

length = 10000000000000000000000000000000000000000000000
print "0" * length
Run Code Online (Sandbox Code Playgroud)

这导致了OverflowError: cannot fit 'long' into an index-sized integer.

我很好奇,这种配方能不能用于任意长度的尺寸?或者处理length未知情况并且可能具有如此大值的方案的正确方法是什么?

Thi*_*ter 10

不,您不能在任何编程语言中创建类似示例中的大字符串.字符串包含每个字符.10 46个字节最有可能比任何人存储的数据更多.你可以超过一万亿的谷歌数据中心(假设谷歌有1个存储空间,但肯定不是这样的情况......)并且仍然有更少的磁盘空间,更不用说RAM就是你需要的这样一个字符串.

要存储类似于示例中的大字符串,您必须创建自己str的类,__mul__以存储重复次数的方式处理,而不会将整个字符串实际存储在内存中.显然,只要允许修改该字符串,此实现就会变得非常复杂.

  • 有乐趣支持像`foo = some_huge_str [:10**10] + some_huge_str [10**20:10**30]`:p (3认同)