2012-01-22 10 views

Odpowiedz

5

nie są one tak różne. Prawie wszystko, czego nauczyłeś się w Pythonie 3, przeniesiesz do Pythona 2. Sugerowałbym, żebyś po prostu zanurkował. Czasami zobaczysz komunikat o błędzie, ale przez większość czasu będą one zrozumiałe.

Mój zakład jest, że nauka Django sposób będzie trudniej niż przyzwyczaić Pythonie 2.

Można znaleźć six biblioteka pomocne, jeśli chcesz napisać kod, który jest solidnie kompatybilny wstecz. W przeciwnym razie, mogę myśleć tylko o dwie rzeczy, które mogą być ważne, aby z góry wiedzieć, jak iść do tyłu Python 2:

  1. unikać przy użyciu klas w starym stylu. W Pythonie 3, można zadeklarować klasę tak, bez żadnego problemu:

    class Foo: 
        pass 
    

    w Pythonie 2, jeśli to zrobisz, masz klasę w starym stylu, który prawdopodobnie nie ma. Ale nie otrzymasz żadnych komunikatów o błędach, więc mogą pojawiać się subtelne błędy dziedziczenia i pozostać ukryte przez długi czas, zanim spowodują problemy. Więc w Pythonie 2, należy pamiętać, aby jawnie dziedziczą object:

    class Foo(object): 
        pass 
    
  2. Unikaj używania range(n), przynajmniej dla dużych wartościach n. W Pythonie 3, range zwraca inteligentny iterator, ale w Pythonie 2, range zwraca rzeczywistą listę. W przypadku dużych zakresów może spalić dużo pamięci. Aby uzyskać zachowanie Pythona 3 w wersji range w Pythonie 2, użyj xrange(n). Podobne zastrzeżenia dotyczą metod słownikowych keys(), values() i items(). Wszystkie zwracają listy w Pythonie 2. Użyj metod iterkeys(), itervalues() i iteritems(), aby zaoszczędzić pamięć.

Istnieje kilka innych doskonałych odpowiedzi na to pytanie, które obejmują kilka innych szczegółów, takich jak unicode wsparcia.

+0

Dzięki. Prawdopodobnie popełniłbym ten błąd, nawet nie zdając sobie z tego sprawy. – Orcris

5

Jeśli jesteś już zaznajomiony z Pythona 3, wtedy nie ma prawie żadnychróżnice trzeba będzie się martwić podczas kodowania w Pythonie 2. Różnice najbardziej widoczne dla użytkowników mają zrobić ze szczegółami instrukcja print, której prawdopodobnie nie będziesz używać w Django.

Po prostu napisz kod i zapytaj o ewentualne problemy z specyficznymi dla.

3

Kolejną dużą różnicą jest to, jak Python 3 obsługuje kod Unicode - wszystko w Pythonie 3 jest ciągiem unicode lub danymi binarnymi, podczas gdy w Pythonie 2 rozróżniono łańcuchy znaków Unicode i łańcuchy 8-bitowe.

Poniższa strona ma dużo więcej informacji na temat różnicy między Python 2 i 3. http://docs.python.org/release/3.0.1/whatsnew/3.0.html

1

przeczytać to: http://python3porting.com/differences.html

Należy pamiętać, że istnieje wiele rzeczy po prostu usunięte z Pythonie 2, jak apply(), które w związku z tym nie trzeba się martwić.

Również, jak zauważył senderle, używa się podklasy z obiektu (jest to również zalecane w Pythonie 3, prawdopodobnie z powodu różnic w Pythonie 2).

Powiązane problemy