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: name 'xrange' is not defined. Did you mean: 'range'? for n in xrange(1, 10): print(n)
使用range()
类而不是xrange()
要解决该错误,只需替换xrange
为range
。
for n in range(1, 10): print(n)
该函数在 Python 3 中xrange
重命名为。range
range类通常用于在循环中循环特定次数,并for
采用以下参数:
姓名 | 描述 |
---|---|
start |
表示范围开始的整数(默认为0 ) |
stop |
向上,但不包括提供的整数 |
step |
范围将由每 N 个数字组成,从start 到stop (默认为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
异常,我们设置xrange
为range
.
然后您可以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
和参数的值,则该值是包含性的,而该值是独占性的。stop
start
stop
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.
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.
result = list(range(1, 0)) # 👇️ [] print(result)