NameError: name ‘xrange’ is not defined in Python [已解决]

NameError: 名称 ‘xrange’ 未在 Python 中定义

NameError: name ‘xrange’ is not defined in Python

xrange()当我们在 Python 3 代码库中使用函数时,Python 出现“NameError: name ‘xrange’ is not defined”

要解决该错误,请改用该range()函数,因为在 Python 3 中xrange已重命名为range

nameerror 名称 xrange 未定义

下面是错误如何发生的示例。

主程序
# ⛔️ NameError: name 'xrange' is not defined. Did you mean: 'range'? for n in xrange(1, 10): print(n)

使用range()类而不是xrange()

要解决该错误,只需替换xrangerange

主程序
for n in range(1, 10): print(n)

该函数在 Python 3 中xrange重命名为。range

range类通常用于在循环中循环特定次数,for采用以下参数:

姓名 描述
start 表示范围开始的整数(默认为0
stop 向上,但不包括提供的整数
step 范围将由每 N 个数字组成,从startstop(默认为1

使您的导入语句通用

您可以使用try/except语句使您的导入通用。

主程序
try: # ✅ python 2 print(xrange) except NameError: # ✅ python 3 xrange = range print(xrange) # 👉️ <class 'range'> for n in xrange(1, 10): print(n)

我们尝试访问该xrange函数,如果访问它引发NameError
异常,我们设置
xrangerange.

然后您可以xrange()在您的代码中安全地调用。

该代码使其xrange在 Python 2 和 Python 3 中都可用。

如果您的代码仅在 Python 3 中运行并且您需要调用而xrange()不是
range,请将变量设置为range

主程序
xrange = range for n in xrange(1, 10): print(n)

现在xrange变量被设置为range类并且在 Python 3 中可用。

range() 类是如何工作的

如果您只将单个参数传递给range()构造函数,则它被认为是参数的值stop

主程序
for n in range(5): print(n) result = list(range(5)) # 👇️ [0, 1, 2, 3, 4] print(result)
该示例表明,如果start省略参数,则默认为0,如果step省略参数,则默认为1.

如果提供了start和参数的值,则该值是包含性的,而该值是独占性的。stopstartstop

主程序
result = list(range(1, 5)) # 👇️ [1, 2, 3, 4] print(result)

Notice that the range goes up to, but not including 5 because the stop value
is exclusive.

Creating a range consisting of every N numbers #

If you need to create a range that consists of every N numbers, provide a value
for the step parameter.

main.py
result = list(range(1, 7, 2)) # 👇️ [1, 3, 5] print(result)

We passed a value of 2 for the step parameter. Notice that the start value
is still inclusive, and the stop value is still exclusive.

If the value for the stop parameter is lower than the value for the start
parameter, the range will be empty.

main.py
result = list(range(1, 0)) # 👇️ [] print(result)