Pip*_*Pip 253 python range xrange python-3.x runtimeexception
我在运行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
Run Code Online (Sandbox Code Playgroud)
游戏来自这里.
是什么导致这个错误?
Mar*_*ers 495
您正在尝试使用Python 3运行Python 2代码库.xrange()已range()在Python 3中重命名为.
用Python 2运行游戏.不要试图将它移植,除非你知道自己在做什么,很可能会出现超越更多的问题xrange()与range().
对于记录,您所看到的不是语法错误,而是运行时异常.
如果您确实知道自己在做什么并且正在积极地使Python 2代码库与Python 3兼容,那么您可以通过将全局名称添加到模块作为别名来桥接代码range.(考虑到您可能必须更新range()Python 2代码库中的任何现有用法,list(range(...))以确保您仍然在Python 3中获得列表对象):
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(...))
Run Code Online (Sandbox Code Playgroud)
或者在代码库中替换xrange(...)with的所有用法,range(...)然后使用不同的填充程序使Python 3语法与Python 2兼容:
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
Run Code Online (Sandbox Code Playgroud)
后者更适用于那些希望长期只能兼容Python 3的代码库,只要有可能就更容易使用Python 3语法.
小智 15
添加xrange=range你的代码:)它对我有用.
小智 12
在Python 2.x中,xrange用于返回生成器,而range用于返回列表。在 python 3.x 中,xrange已被删除,并且range返回一个生成器,就像python 2.x 中的xrange一样。因此,在python 3.x中你需要使用range而不是xrange。
小智 8
我加入这个解决进口问题的
更多信息
from past.builtins import xrange
Run Code Online (Sandbox Code Playgroud)