Bạn đang cố chạy một cơ sở mã Python 2 với Python 3. xrange()
đã được đổi tên thành range()
Python 3.
Chạy trò chơi với Python 2 thay thế. Đừng cố gắng chuyển nó trừ khi bạn biết những gì bạn đang làm, rất có thể sẽ có nhiều vấn đề hơn xrange()
so với range()
.
Đối với bản ghi, những gì bạn đang thấy không phải là lỗi cú pháp mà là ngoại lệ thời gian chạy thay thế.
Nếu bạn biết bạn đang làm gì và đang tích cực tạo ra một cơ sở mã Python 2 tương thích với Python 3, bạn có thể kết nối mã bằng cách thêm tên toàn cầu vào mô-đun của mình làm bí danh range
. (Hãy tính đến việc bạn có thể phải cập nhật mọi range()
sử dụng hiện có trong cơ sở mã Python 2 list(range(...))
để đảm bảo bạn vẫn nhận được một đối tượng danh sách trong 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(...))
hoặc thay thế tất cả các sử dụng xrange(...)
với range(...)
trong cơ sở mã và sau đó sử dụng một shim khác để làm cho cú pháp Python 3 tương thích với Python 2:
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
Loại thứ hai thích hợp hơn cho các cơ sở mã muốn hướng tới tương thích Python 3 chỉ trong thời gian dài, sau đó chỉ cần sử dụng cú pháp Python 3 bất cứ khi nào có thể.