biri Python tamamlanması atamaları gerektirir ve bir alıştırma olarak, böyle bir komut dosyası kullanarak, emin programlarım Python 2 ve Python 3 hem çalışmak hazırlamakta olduğunuz:Python 3'ün "menzili" Python 2'ye "backporting" kötü bir fikir mi? benim sınıfların
#!/bin/bash
# Run some PyUnit tests
python2 test.py
python3 test.py
Bir
import sys
# Backport Python 3's range to Python 2 so that this program will run
# identically in both versions.
if sys.version_info < (3, 0):
range = xrange
bu kötü bir fikir mi: Ben yapıyorum şey range
işi bu kod parçası ile iki sürümünde de aynı yapıyor?
DÜZENLEME:
Bunun nedeni xrange
ve Python 2 ve Python 3 farklı range
eser ve benim kod hem de aynı şeyi yapmak istiyorum olmasıdır. Bunu başka bir şekilde yapabilirim, fakat Python 3'ün Python 2 gibi çalışmasını sağlıyorum çünkü Python 3 “gelecek”. Açıkçası listesini kullanarak değilim
for i in range(1000000000):
do_something_with(i)
ancak Python 2'de, bu belleğin bir deli miktarı kullanacağız:
İşte sadece range
kullanarak yeterince iyi değil neden bir örnek.
Gerçekten Python 2'nin aralığı ile çalışmıyor? –
Bunun kötü bir fikir olduğunu söyleyemem, ama 'range' adını yeniden kullanmak kötü olurdu. Python 2.x kodunda "range" i görüyorsam, bir listeyi döndürmesini ve bir yineleyici olmadığını ve adın yeniden atanıp atanmadığını görmek için kodda arama yapmak zorunda kalmamayı beklerdim. Muhtemelen Python 3.x'te tanımlanmadığı gibi, farklı bir ismi hep birlikte kullanmak veya 'xrange'i tekrar kullanmak daha kolay olurdu. –
Ne yapıyorsun? Xrange' ile çalışıyor ama Python 2.x'in 'range' ile çalışmıyor? –