Python 中错误 NameError: Name 'xrange' Is Not Defined
我们将了解在 Python3 中调用 xrange()
函数时出现错误的原因,并了解如何解决此问题。 我们还将了解 range()
和 xrange()
之间的区别,并了解如何在不同的 Python 版本中使用 range()
函数。
在Python3使用 xrange() 时出现NameError: name 'xrange' is not defined 错误
你可能知道,从 Python2 到 Python3 的过渡很大一部分是 Python3 中不再存在 xrange()
函数。 我们将并排使用 Python2 和 Python3 并比较它们,看看两个版本的 Python 中 range()
和 xrange()
之间的区别。
首先,我们将使用可以使用 xrange()
函数的 Python2 环境,但是 Python2 环境也有 range()
函数。 我们将看到这些函数的行为略有不同; xrange() 返回一个 xrange()
对象,而 range()
返回一个列表。
在 Python3 中,range()
函数返回一个 range()
对象,而在 Python2 中,range()
函数返回一个列表。 基本上,xrange()
是一个生成器,而 range()
在 Python3 中也是一个生成器。
现在让我们关注 Python2。 我们首先要检查一下这个 xrange()
对象。
我们将查看它的类型以及是否有 xrange 对象。
type(xrange(6))
输出
<type 'xrange'>
接下来,我们将看看如果我们用一个列表包裹它会发生什么。
list(xrange(6))
输出
[0, 1, 2, 3, 4, 5]
现在,我们将 xrange(6)
分配给一个名为 a 的变量,创建一个 range() 对象并将其分配给 b 变量。 我们将导入 sys 以获得 a 和 b 的大小。
当我们在 Python shell 中运行这段代码时,我们应该注意到两个变量大小之间存在很大差异。
>>> import sys
>>> a=xrange(6)
>>> b=range(6)
>>> sys.getsizeof(a)
32
>>> sys.getsizeof(b)
112
xrange()
对象的大小比 range()
小,这就是 xrange()
比 range()
快的原因。
由于执行速度较快,初学者通常会尝试使用Python3中的 xrange()
函数并得到一个错误(name 'xrange' is not defined),因为Python3不支持 xrange()
函数。
# in python 3
xrange(6)
输出:
NameError: name 'xrange' is not defined
在 Python3 中,xrange()
对象变成了 range()
对象。
# in python 3
>>> range(6)
range(0, 6)
让我们导入 sys 来查看 Python3 中 list 和 range() 对象的大小。
# in python 3
>>> a=range(6)
>>> b=[0,1,2,3,4,5]
>>> import sys
>>> sys.getsizeof(a)
48
>>> sys.getsizeof(b)
152
我们得到了 48 个,这与列表更具可比性。 您可以看到 Python2 中的 xrange()
和 Python3 中的 range()
可能会以相似的速度运行并占用相似的内存空间。
在 Python3 环境中,我们不能使用 xrange()
函数,因为正如我们所说,xrange()
不再存在; 它从未被制作成 Python3。 我们可以使用 range()
函数而不是 xrange()
因为 range()
函数在 Python3 中要快得多。
相关文章
Python 错误 Fatal Python Error: Py_Initialize Unable to Load the File System Co
发布时间:2023/05/30 浏览次数:147 分类:Python
-
在本文中,我们将学习如何解决在代码执行期间发生的致命 python 错误。Python 错误 Fatal Python error: Py_Initialize: unable to load the file system codec
Python 错误 WebDriverException: Message: Geckodriver Executable Needs to Be in
发布时间:2023/05/30 浏览次数:187 分类:Python
-
本教程将讨论Python中错误 Message: 'geckodriver' executable needs to be in PATH。geckodriver 是 Mozilla 开发的浏览器引擎,充当 Selenium 和 Firefox 浏览器之间的链接。
Python 错误 Valueerror: Expected 2d Array, Got 1d Array Instead
发布时间:2023/05/30 浏览次数:103 分类:Python
-
当我们在 numpy 中传递一维数组而不是二维数组时,会发生错误 ValueError: Expected 2D array, got 1D array instead 。如您所知,每种编程语言都会遇到很多错误,有些是在运行时,有些是在编译时。 Pyth
解决 Python中错误 TypeError: Not All Arguments Converted During String Forma
发布时间:2023/05/30 浏览次数:138 分类:Python
-
模 (%) 运算符就是其中一种方法。 它是 Python 中最古老的字符串格式化方法之一,以错误的方式使用它可能会导致 TypeError: not all arguments converted during string formatting。
解决 Python中 TypeError: Nonetype Object Is Not Subscriptable 错误
发布时间:2023/05/30 浏览次数:162 分类:Python
-
在本文中,我们将讨论为什么 TypeError: NoneType object is not subscriptable 在 Python 中出现以及如何修复它。 我们将学习如何对序列数据类型错误地使用 append()、sort() 和 reverse() 等方法导致
解决 Python中错误 AttributeError: 'Nonetype' Object Has No Attribute 'Group'
发布时间:2023/05/30 浏览次数:68 分类:Python
-
Python 正则表达式(regex)匹配并提取一串特殊字符或模式。 在 Python 中,当我们的正则表达式无法匹配指定的字符串时,会出现 AttributeError: 'NoneType' object has no attribute 'group' 错误。在本文中,我
Python 中错误 ValueError: Invalid Literal for Float()
发布时间:2023/05/17 浏览次数:55 分类:Python
-
Python 中 ValueError: invalid literal for float()。 float() 函数无法将字符串类型转换为浮点数。 相反,它会抛出一个 ValueError,它可能会因您的 Python 版本而异。
Python 错误 TypeError: Unhashable Type: List
发布时间:2023/05/17 浏览次数:112 分类:Python
-
本文将讨论 TypeError: unhashable type: 'list' 以及如何在 Python 中修复它。因为 Python 字典只接受可散列数据类型作为它们的键,而列表是不可散列的。
Python 中错误 AttributeError: __Exit__
发布时间:2023/05/17 浏览次数:117 分类:Python
-
尝试用 Python 开发新程序时出错是很常见的。 AttributeError 是 Python 中最常见的错误之一。在本文中,我们将看看如何解决这个 AttributeError: __exit__ 错误,并且我们将通过相关示例和解释来讨论这