Python 2 czy 3?

julekcezar
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
  • Postów:6
0

Może każdy wypowie się w temacie, którą wersję wybrać, jeśli zaczynamy swoją przygodę z pythonem? Początkujący mają z tym dużo problemów. Na dzień dzisiejszy mamy python 2.7.10 i 3.5.0. Sam uczę się 3.

fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
4

jezeli

  1. python to Twoj pierwszy jezyk programowania
  • nie ma znaczenia
  1. zaczynasz uczyc sie pythona (kolejny jezyk programowania)
  • nie ma znaczenia
  1. potrzebujesz pythona uzyc z jakimis konkretnymi biblotekami
  • zobacz czy sa dostepne (i czy dzialaja) pod wersja 3, jezeli tak mozesz uczyc sie 3 jezeli nie to ucz sie 2.7

i to by bylo na tyle.

0

Wersja 3 się bardziej opłaca jeśli chcesz kodować asynchronicznie, natomiast wersja 2 bardziej sprzyja rzeczom akademickim. Nie mniej lepiej jest znać obie wersje :)

0

Tak jak kolega napisał, jak dopiero zaczynasz abo to Twój kolejny język to nie ma znaczenia.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 14 godzin
2
  • nie ma znaczenia

Ma znaczenie takie, że Python 2 nie będzie rozwijany i choć pewnie długo jeszcze będzie na sztucznym podtrzymaniu, nie powinno się go używać w nowych projektach.

fasadin
do nauki bedzie mialo to znaczenie?
Azarien
@fasadin: no można się uczyć i COBOL-a..
Shalom
@Azarien analogia z d**y bo różnice w składni i podstawach między 2 i 3 są kosmetyczne i jak ktoś umie pisać w jednej wersji to napisze i w drugiej bez problemu.
Azarien
dlatego uczyłbym się 3, a 2 dopiero przy okazji jak przyjdzie komuś grzebać w starociu.
Wizzie
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 8 lat
0

W podklejonym temacie masz nawet odpowiedź na to pytanie ;) Wybierz Pythona 2 tylko, jeśli
a) biblioteka, której nie da się zastąpić, nie wspiera Pythona 2
b) rozwijasz projekt w Pythonie 2, w którym zbyt czaso/pieniądzo-chłonne byłoby przepisanie go na Py3, albo nie da się z powodu wymienionego w poprzednim punkcie.
W przeciwnym razie Python 3.

Gjorni
  • Rejestracja:około 12 lat
  • Ostatnio:około 3 lata
1

Ucz się 3-ki, a jeżeli dany projekt, na którym przyjdzie Ci pracować będzie napisany w 2-ce, to zapoznaj się z subtelnymi różnicami między obiema wersjami. Nielogiczne jest uczenie się wersji, która nie będzie w przyszłości rozwijana. Owszem, z uwagi na kosmetyczne różnice między dwójką i trójką jako tako nie ma różnicy, której wersji zaczniesz się uczyć, bo niezależnie od wyboru będziesz umiał pisać w obu. Pytanie tylko po co w takim razie wybierać wersję przestarzałą, zamiast tej, która będzie rozwijana w przyszłości?


The quieter you become, the more you are able to hear.
fasadin
bo 1) jest stablina 2) wiele rozszerzen dziala pod 2.7 a pod 3 niekoniecznie
Gjorni
1) Czy możesz podać przykłady, gdzie trójka jest mniej stabilna od dwójki? 2) Prawda, ale to się ciągle zmienia.
0

Na start, bym brał trójkie, bo już sporo modułów przepisano, a nie ma co się bawić w przestarzałym pythonie. 3.6 albo 3.7 ma wprowadzić możliwość programowania równoległego.

Wizzie
równoległego? asyncio jest od Pythona 3.4, jeśli chodzi o GILa to się nie zanosi raczej, multiprocessing też jest od jakiegos czasu
drorat1
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Krasnystaw
  • Postów:1181
0

Różnice między v. 2.x a v. 3.x mają być kosmetyczne? To jak się zachowa aplikacja w której przez pomyłkę (a to się zawsze może zdarzyć) napisana pod v. 3.x i zastosowano gdzieś dzielenie na liczbach całkowitych z jednym tylko ukośnikiem zamiast dwóch?

W v. 2x jako wynik dzielenia 8/3 będzie 2 i będzie to liczba całkowita, zaś w v 3.x będzie floatem bo tu przez pomyłkę ktoś nie zastosował 8 // 3 ale 8 / 3 i lipa. Jakie to może mieć skutki, gdyby ktoś dla przykładu w pythonie napisał sobie na PC jakąś aplikację sterującą zachowaniem jakiegoś własnego quadro (np. przez Arduino i moduł nadawczo odbiorczy 433 MHz) a co dopiero amatorskiej rakiety?

Co to ma być? Zamiast porządnego komitetu który by ustalił pewne standardy i byłoby założenie o kompatybilności wstecznej, co moim zdaniem może być tu dość istotne o wszystkim decyduje twórca pythona który zdaje się jest dożywotnim dyktatorem? Jaką można mieć pewność że linia 4x będzie kompatybilna wstecznie z 3x bo o 2x to chyba już nie może być mowy? Teraz się uczycie pod 3x bo to jest rozwijane a wydaje mi się że py 2.7 jest nadal bardzo popularny a i jest od groma bibliotek pod tą wersję. Poza tym jest konwerter 2 to 3 więc nawet jak ktoś zna 2x to jaki to jest problem przekonwertować pod 3x? Są z tym jakieś istotne problemy? Bo po co niby jest ten konwerter?

ShookTea
o wszystkim decyduje twórca pythona który zdaje się jest dożywotnim dyktatorem? Tak! https://pl.wikipedia.org/wiki/Benevolent_Dictator_for_Life
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

@drorat1 nie przesadzaj. Rzecz w tym że takich różnic o których mówisz jest MAŁO. Dzielenie, print, kodowanie stringów to są takie 3 najpopularniejsze. Po co jest konwerter? Ano po to żebyś nie musiał lecieć ręcznie przez tysiące linii kodu i zamieniać print "dupa" na print("dupa") na przykład :)
Jak ktoś zaczyna przygodę z pythonem to nie pisze of razu softu do quadrocoptera, cubesata czy rakiety stratosferycznej. A jak już jest na tyle zaawansowany żeby taki soft pisać to nie zrobi takich błędów.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
KA
a co to jest te kubesata? to takie coś -> https://pl.wikipedia.org/wiki/CubeSat
Shalom
Ano, takie coś. Wysyła się takie "przy okazji" startu zwykłego satelity albo np. wyrzuca sie je (czasem ręcznie :D) za burtę z ISS.
drorat1
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Krasnystaw
  • Postów:1181
0

Konwersja czegoś takiego za pomocą 2to3:

Kopiuj
a = 8 / 3
print(a)

nie spowoduje żadnych zmian:

Kopiuj
RefactoringTool: Skipping implicit fixer: buffer
RefactoringTool: Skipping implicit fixer: idioms
RefactoringTool: Skipping implicit fixer: set_literal
RefactoringTool: Skipping implicit fixer: ws_comma
RefactoringTool: No files need to be modified.

A wynik działania w py 2.7: 2, w py 3.4: 2.6666666666666665

I gdzie tu mowa o przydatności tego narzędzia do konwersji?

Shalom
bo python 2 miał też print instruction. Konwersja z print "dupa" zrobi print("dupa"). A dzielenia nie może poprawić bo nie wiadomo które miałeś na myśli bez testowania typu operandów.
BY
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:65
0

Ale co to udowadnia? Nie jest to najfajniejsza sytuacja z 2 gałęziami języka, ale to i tak zawsze lepsza sytuacja niż wspieranie błędów ewolucji języka z racji kompatybilności wstecznej.

Ogólnie coraz więcej sensownych bibliotek jest przepisanych na 3. Nie warto na początek uczyć się starszej wersji. A jeśli ktoś chce komercyjnie używać Pythona i nie będzie znał różnic między dwiema odnogami, to cóż, nie wróżę mu kariery.

drorat1
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Krasnystaw
  • Postów:1181
0

To dlaczego od razu nie przemyślano dość dobrze i z sensem kierunku rozwoju i nie przyjęto na sztywno pewnych konwencji tylko w 3x mamy zabawy tego typu i problem z kompatybilnością, to co podałem to tylko przykład że z tym pythonem należałoby niestety uważać. Przykładowo, duży projekt w DJANGO pod py 2.7, następuje później jakaś decyzja o aktualizacji pythona do 3x, co pociągnie dodatkowe koszta bo serwis np. przestaje działać poprawnie. Nie było by chyba takich problemów gdyby od początku zadbano o kompatybilność. Nie trzyma mi się kupy.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Ale to była decyzja przemyślana i po prostu uznano że ciągnięcie wstecznej kompatybilności w pewnych kwestiach sprawia że python3 byłby zwyczajnie gorszy niż by mógl. Języki sie rozwijają i nikt nie mógl przewidzieć kierunku rozwoju tego języka kiedy go tworzono (wiele lat temu...)


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 20 godzin
  • Lokalizacja:Wrocław
10
drorat1 napisał(a):

Nie było by chyba takich problemów gdyby od początku zadbano o kompatybilność. Nie trzyma mi się kupy.

Ja nie widzę problemu - chcesz pisać w języku zachowującym kompatybilność wsteczną, wybierz Javę. Tam masz gwarancję, że wszystkie błędy projektowe z pierwszej wersji będą także w najnowszej.

edytowany 1x, ostatnio: somekind
Zobacz pozostałe 4 komentarze
KA
taa @somekind zawsze krytykuje Jave i Linuxa. nic nowego
KR
aż Ci +1 dałem
krzysiek050
plusowałbym na bashu
LB

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.