NameError:全局名称'xrange'在Python 3中未定义

问题描述 投票:249回答:6

运行python程序时出现错误:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 110, in <module>
  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 27, in __init__
  File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\class\inventory.py", line 17, in __init__
builtins.NameError: global name 'xrange' is not defined

游戏来自here

什么导致此错误?

python python-3.x range runtimeexception xrange
6个回答
488
投票

[您正在尝试使用Python 3运行Python 2代码库。xrange()在Python 3中已重命名为xrange()

改为使用Python 2运行游戏。除非您知道自己在做什么,否则不要尝试移植它,很可能会出现range()range()之外的更多问题。

为了记录,您看到的不是语法错误,而是运行时异常。


[如果您确实知道自己在做什么,并且正在积极地使Python 2代码库与Python 3兼容,则可以通过将全局名称添加为模块的别名作为xrange()来桥接代码。 (请注意,您[[may必须用range()更新Python 2代码库中的任何现有range使用,以确保您仍然在Python 3中获得列表对象):]]range()

或在代码库中将list(range(...))的所有使用替换为try:
    # Python 2
    xrange
except NameError:
    # Python 3, xrange is now named range
    xrange = range

# Python 2 code that uses xrange(...) unchanged, and any
# range(...) replaced with list(range(...))
,然后使用其他垫片使Python 3语法与Python 2兼容:

xrange(...)

对于长期以来旨在与Python 3兼容的代码库,后者是更可取的[[only
,因此只要可能就可以使用Python 3语法会更容易。

15
投票

6
投票

1
投票
xrange

0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.