擅长:python、mysql、java
<p><code>range(x)</code>将首先创建一个大小为<code>x</code>的列表,然后用整数填充它。影响包括:</p>
<ul>
<li><code>x = 10**20</code>:<a href="https://docs.python.org/2/library/exceptions.html#exceptions.OverflowError" rel="nofollow">OverflowError</a>,因为列表只能容纳<a href="https://docs.python.org/2/library/sys.html#sys.maxsize" rel="nofollow">^{<cd4>}</a>(对于32位和64位构建,通常分别是<code>2**31 - 1</code>或<code>2**63 - 1</code>)项。你知道吗</li>
<li><code>x = 10**15</code>:<a href="https://docs.python.org/2/library/exceptions.html#exceptions.MemoryError" rel="nofollow">MemoryError</a>,因为内存不足,无法分配大小为x的(未初始化)列表</li>
<li><code>x = 10**9</code>:将创建一个大小为x的列表;然后对于<em>every</em>integer<code>i < x</code>,将创建一个新的int对象并将其写入磁盘;每个int对象都需要内存分配。(这最终可能会导致内存错误,也可能不会导致内存错误。)这会给CPU和内存带来很大的负载,从而降低机器的速度。你知道吗</li>
</ul>
<p>总之,对于前两种情况,对于python来说,任务显然无法完成,它引发了一个异常。在第三种情况下,它认为它可能能够完成任务,尽管速度很慢。你知道吗</p>