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:ponad 13 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 17 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:ponad 7 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:prawie 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:prawie 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:3 dni
  • 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
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)