Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Novinky v jazyce Python 3.0

mrtka
mrtka (neregistrovaný)
8. 12. 2008 0:20 Nový

Závsr -> Záver

celé vlákno
First!
uživatel si přál zůstat v anonymitě
8. 12. 2008 0:26 Nový

Re: Závsr -> Záver

celé vlákno
Opraveno
Adam Štrauch aura:99
8. 12. 2008 5:03 Nový

Re: Závsr -> Záver

celé vlákno
A nechtěl jsem zůstat v anonymitě.
anonym anonymni
anonym anonymni (neregistrovaný)
8. 12. 2008 13:51 Nový

Re: Závsr -> Záver

celé vlákno
nechtel, ale zustal
volca
volca (neregistrovaný)
8. 12. 2008 8:54 Nový

Re: Závsr -> Záver

celé vlákno
Ne first, ale Third!
kkt
kkt (neregistrovaný)
8. 12. 2008 3:10 Nový

RE: Novinky v jazyce Python 3.0

celé vlákno
No to je super, v takom jazyku by som chcel programovat. Konecne uz viem co s casom, nemusim sukat svoju zenu, ale mozem dokolecka prepisovat programy podla aktualnej verzie pythonu. A co tak vo komercnej sfere! Kazdy sef je uz nadrzeny aby mohol utracat prachy za prepisovanie aplikacii. Krasa
uživatel si přál zůstat v anonymitě
8. 12. 2008 5:02 Nový

RE: Novinky v jazyce Python 3.0

celé vlákno
Některé jazyky se vyvíjejí a některé stagnují. Tohle je open source, klidně si můžeš udržovat Python 2.x příštích 100 let. Jinak.. některé věci vezme 2to3, na další upozorní Python 2.6 a pak už toho moc nezbude. Programátoři většinou nepoužívají všechno co bude změněno.
Inkvizitor
Inkvizitor (neregistrovaný)
8. 12. 2008 7:51 Nový

RE: Novinky v jazyce Python 3.0

celé vlákno
Možná bys mohl zkusit kvantifikovat ten čas, který se tím přepisováním ztratí. Já jsem zažil daleko horší martýria kvůli novým verzím knihoven. Pythonu většina těch změn prospěje a noví programátoři a nové projekty holt získají na úkor stávajících. Tomu se říká vývoj.
beer
beer (neregistrovaný)
8. 12. 2008 10:44 Nový

RE: Novinky v jazyce Python 3.0

celé vlákno
To vzdy kdyz vyjde nova verze jazyka, prepisujete vsechny projekty se starsi verzi? LOL Bych u Vas nechtel pracovat! Kdyz si predstavim, jak jsem postupne delal v Delphi 3,4,5,6,7, bych asi nedelal nic jinyho nez prepisoval :D
...
... (neregistrovaný)
8. 12. 2008 13:29 Nový

RE: Novinky v jazyce Python 3.0

celé vlákno
tak pokud delas ve delphi tak ti nezbyde nic jinyho nez prepisovat... protoze to je nekompatibilni i samo se sebou...
uživatel si přál zůstat v anonymitě
8. 12. 2008 20:51 Nový

RE: Novinky v jazyce Python 3.0

celé vlákno
To je taky pekna kktina, hned vsechny projekty prepisovat jenom kvuli tomu, ze exsituje nova verze jazyka... to se dela snad jen v PHP
Inkvizitor
Inkvizitor (neregistrovaný)
8. 12. 2008 7:59 Nový

Pohled versus iterátor

celé vlákno
Nevím, autore, jak jsi myslel to, že na rozdíl od pohledu není možné z iterátoru dostat znovu tutéž hodnotu. Podle mě jsou oba typy objektů v tomto podobné. dict_keys nepodporuje přístup pomocí indexů a tudíž je to podle mě klasický iterátor, tedy jednou projet a šmytec.
Jan Švec
Jan Švec (neregistrovaný)
8. 12. 2008 8:51 Nový

Faktické chyby

celé vlákno
Dobrý den pane Štrauchu,
se zájmem jsem přečetl váš článek a v ničem mě nepřekvapil - přesně jak jsem čekal je psaný horkou jehlou. Nechci vám sahat do svědomí, ale chtěl bych vědět, proč pro vytvoření seznamu z iterátoru neustále používáte konstrukci l=[x for x in iterable]? Není lepší zapsat l=list(iterable)?

Další naprosto fatální chyba - ukázka práce s dictionary (slovníky). Zkoušel jste si onen příklad s for x in d.keys().reverse(): v Pythonu 2.x? Pravděpodobně ne, protože byste zjistil, že on ani ve 2.x nefunguje. Problém je v tom, že metoda seznamu reverse() provádí otočení pořadí v místě a vrací None. A další pro mě velice důležitá věc - můžete mi naznačit případ z praxe, kde jste potřeboval otočit pořadí klíčů z dictionary? Ona dictionary totiž drží klíče neřazené a tudíž není zaručeno, že voláním keys() získate vždy tutéž posloupnost.

Další věcná chyba byla u příkladu s řazením - to řazení, které jste napsal pomocí str.lower() je bez ohledu na velikost písmen!

Další vaše fatální pochybení je u odstavce porovnávajícím bytes a str typy. Zapomněl jste zmínit změnu nejzásadnější - typ bytes je proměnný (mutable) typ, čili ho nemůžete použít jako klíče do slovníku! Typ str je oproti tomu neměnný. Důsledky z toho vyplývající si pravděpodobně domyslíte.

Nehci vám sahat do svědomí, ale mohu se zeptat kolik kódu jste napsal v Pythonu 2.x? A kolik v 3.x?

Omlouvám se všem za "rýpavý" příspěvek, ale takto nepřesný článek hned poránu mě pěkně nadzvedl ze židle. Přeji pěkný den,

Jan Švec

JS
JS (neregistrovaný)
8. 12. 2008 9:41 Nový

Re: Faktické chyby

celé vlákno
V zasade souhlasim, az na jednu drobnost - podle
http://docs.python.org/dev/3.0/whatsnew/3.0.html
jsou bytes immutable (pokud chcete mutable, je tam bytearray).
František Jahoda
František Jahoda (neregistrovaný)
8. 12. 2008 9:44 Nový

Re: Faktické chyby

celé vlákno
Pane Švec,
Ve většině svých poznámek máte pravdu, ale v jedné věci se ve své horlivé kritice mýlíte.
Typ bytes je v pythonu 3.0 neměnitelný (immutable).

zdroj: http://docs.python.org/3.0/whatsnew/3.0.html
Like str, the bytes type is immutable. There is a separate mutable type to hold buffered binary data, bytearray. Nearly all APIs that accept bytes also accept bytearray. The mutable API is based on collections.MutableSequence.

Domnívám se, že i kritiku lze napsat mírnějším tónem a veřejně neponižovat autora za to, že se pokusil o krátké shrnutí.
slavíček
slavíček (neregistrovaný)
22. 4. 2009 16:11 Nový

Re: Faktické chyby

celé vlákno
Souhlasím plně!
Jan Švec
Jan Švec (neregistrovaný)
8. 12. 2008 9:51 Nový

Re: Faktické chyby

celé vlákno
Omlouvám se za omyl s bytes, vycházel jsem z Pythonu 3.0a1, kde podle tohoto http://www.artima.com/weblogs/viewpost.jsp?thread=220341 byly bytes ještě mutable.

However, I do want to mention that based upon the feedback for 3.0a1, we've decided to make the 'bytes' type immutable, and create a separate mutable bytes type, 'bytearray'. These two types are mutually compatible, but in the majority of cases you'll be using bytes, not bytearray.

Jehla
Jehla (neregistrovaný)
8. 12. 2008 13:01 Nový

Re: Faktické chyby

celé vlákno
Nehledě na to, že horkou jehlou se obvykle šije, nikoli píše... :)
Petr Mach
8. 12. 2008 15:43 Nový

Re: Faktické chyby

celé vlákno
Souhlasim, take se mi pri cteni toho clanku mrazilo v zadech :-).

Dlasi vec, ktera me nadzvedavala ze zidle, je vydavani typu bytes za retezec. To je naproste nepochopeni ucelu tohoto datoveho typu a vubec cele zmeny, ktera v Pythonu ohledne retezcu probehla. Takze to tedy ne pratele, vyvojari Pythonu si dali velkou praci, aby tohle schizma Pythonu odstranili, a byl v nem zase jenom jeden datovy typ retezcu. Duvodem je rada problemu, ktere nezkuseni programatori meli v dusledku michani retezcu dvou datovych typu. A koukam ze autor clanku by v tom rad pokracoval.

Takze prosim vemte na vedomi, ze bytes nejsou textove retezce, nemaji slouzit jako textove retezce a je hloupost je tak pouzivat. Bytes je sekvence bytu, tedy cisel 0-255 jdouci za sebou. Jsou to binarni data, nikoli text. A rozlisovat mezi binarnimi daty a textem by mel umet i nezkuseny programator.
uživatel si přál zůstat v anonymitě
8. 12. 2008 16:03 Nový

Re: Faktické chyby

celé vlákno
Jenže jak vidno, pan Štrauch má do nezkušeného programátora i novináře bohužel daleko.
yossarian
yossarian (neregistrovaný)
8. 12. 2008 17:53 Nový

Re: Faktické chyby

celé vlákno
Co pamatuju, tak souvisle jdouci binarni data (tzn. v pameti za sebou) jsou retezec, nebo-li string (viz instrukce MOVSB, apod. v assembleru). Nebo vy kluci z vyssi urovne predelavate nazvoslovi tak, jak se vam hodi?
Petr Mach
8. 12. 2008 20:35 Nový

Re: Faktické chyby

celé vlákno
V clanku se psalo o textovych retezcich, ja pisu o textovych retezcich. Kde je problem? Pokud se mluvi o retezci bez pridomku ve vyssim jazyce, znamena to rovnez ten textovy. Uz v jazyce C je, napriklad u funkce fopen(), defaultni textovy rezim, binarni se musi zadavat explicitne. Mozna byste se vy kluci z nizsi urovne meli obcas trochu porozhlednout :-).
Adam Štrauch aura:99
8. 12. 2008 17:12 Nový

Re: Faktické chyby

celé vlákno
1. odst: Píšu tam, že to je jedna z možností, Vaše je lepší.

2. odst. Opravdu chyba, špatně jsem tam nakopíroval kód. Opraveno.

3. odst. Opraveno.

4. odst. Píšu o bytes "Cokoli co není unicode, je označováno za data a je reprezentováno typem bytes". Řetězec jsem zmínil až níže a to je taky chyba. Opraveno.

5. odst. V Pythonu 3.0 jsem toho moc nenapsal, není venku dostatečně dlouho a ani se ještě nedostal do mého oblíbeného Gentoo a ani jsem neměl tendenci psát si vlastní ebuild. Všechny příklady jsem zkoušel na final verzi, bohužel někde asi ne dostatečně.

6. Rýpavých příspěvků tu je plno, za to se nemusíte omlouvat :)
Jirka
Jirka (neregistrovaný)
8. 12. 2008 13:34 Nový

RE: Novinky v jazyce Python 3.0

celé vlákno
Podpora Pythonu 2.6 tu ještě nějaký čas bude
Není to tak, že 2.6 je samostatná řada, která bude podporována (pouze bugfixy) "stále"?
belzebub
belzebub (neregistrovaný)
8. 12. 2008 14:01 Nový

a co % ?

celé vlákno
no me tam chybi jedna z veci ktera me asi nejvic nasere a mozna primeje pouzivat vic jiny jazyky - a to je odstraneni "%" pro formatovani stringu..

fakt me prislo super psat veci jako

s = "a = %d, b = %s, c = %d" % (xyz, bflm, psvz)

oproti tomu nove je sice univerzalnejsi, ale bohuzel zbytecne ukecane:

s = "a = {0}, b = {1}, c = {2}".format(xyz, bflm, psvz)
msk
msk (neregistrovaný)
8. 12. 2008 14:38 Nový

Re: a co % ?

celé vlákno
Co?! To akoze z pythonu zmizne "%s %d" % ( "lama", 10 ) ?! Ved to je absolutne zasadna vlastnost ktora sa mi na tom strasne pacila!
Ondřej Čertík
8. 12. 2008 15:20 Nový

Re: a co % ?

celé vlákno
Mně to funguje:

$ ./python
Python 3.0 (r30:67503, Dec 8 2008, 15:15:54)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> "%s %d" % ( "lama", 10 )
'lama 10'
>>>


Mám dojem, že jsem to taky někde viděl, že to odstraní, ale naštěstí neodstranili. Python 3.0 je asi celkem změna k lepšímu a 2to3 naprostou většinu věcí v pohodě převede, takže bude možné udržovat jeden kód, který poběží na všech verzích Pythonu.
Michal Čihař
8. 12. 2008 15:30 Nový

Re: a co % ?

celé vlákno
Od 3.1 bude % deprecated a někdy v další verzi se vyhodí úplně...
Petr Mach
8. 12. 2008 15:46 Nový

Re: a co % ?

celé vlákno
Pretizeni operatoru modulo (%) pro formatovani retezcu bude oznaceno jako deprecated v Pythonu 3.1. Predpokladam ze cas na jejich zbaveni se budeme mit bud cely vyvojovy cyklus trojkove rady nebo nekolika nasledujicich minor verzi, tedy v kazdem pripade nekolik nasledujicich let.
Sten
Sten (neregistrovaný)
8. 12. 2008 15:34 Nový

Re: a co % ?

celé vlákno
Taky mě to štve. Navíc ten způsob s format bude umět asi deset různých způsobů formátování, takže v tom bude jen bordel :(
mikrom
mikrom (neregistrovaný)
20. 12. 2008 14:00 Nový

Re: a co % ?

celé vlákno
To ma tiez dost znepokojuje, pretoze ja Python pouzivam hlavne na reporty z databazy a generovanie zdrojoveho kodu XML alebo COBOL a vsade hodne pouzivam formatovanie pomocou operatora [b]%[/b].

Python 3.0 som si este nenaistaloval, lebo uprimne povedane mam z toho trochu neprijemny pocit co mi to vyhlasi ked v nom skusim spustit jeden zo svojich programov?

Zaujimalo by ma ci konventor 2to3 dokaze bez problemov prekonvertovat prikazy typu
[code]
print "foo='%s' bar='%s'" % (foo, bar)
[/code]
na
[code]
print("foo='{0}' bar='{1}'".format(foo, bar))
[/code]
alebo si take nieco musim napisat sam?
Mate s tym niekto skusenost?
mikrom
mikrom (neregistrovaný)
20. 12. 2008 14:28 Nový

Re: a co % ?

celé vlákno
Ospravedlnujem sa za formatovanie. Vacsinou pisem na www.tek-tips.com a myslel som, ze root podporuje tiez TGML
Mal som asi nejaky skrat :-) , takze oprava:

To ma tiez dost znepokojuje, pretoze ja Python pouzivam hlavne na reporty z databazy a generovanie zdrojoveho kodu XML alebo COBOL a vsade hodne pouzivam formatovanie pomocou operatora %.

Python 3.0 som si este nenaistaloval, lebo uprimne povedane mam z toho trochu neprijemny pocit co mi to vyhlasi ked v nom skusim spustit jeden zo svojich programov? Zaujimalo by ma ci konventor 2to3 dokaze bez problemov prekonvertovat prikazy typu
print "foo='%s' bar='%s'" % (foo, bar)
na
print("foo='{0}' bar='{1}'".format(foo, bar))
alebo si take nieco musim napisat sam? Mate s tym niekto skusenost?
brk
brk (neregistrovaný)
8. 12. 2008 14:41 Nový

zmeny v pythonu

celé vlákno
Kdysi jsme rikavali "fyzika naucis programovat v jakemkoli jazyce, jen se musi jmenovat fortran" Python(y) je sikovny jazyk. Co mu ale chybi je moznost, alespon volitelna, pro praci s bloky kodu. Kdybych nepouzival konstrukce typu for: ... #endfor tak se v nem pri kopirovani kusu kodu ztratim :)
Sten
Sten (neregistrovaný)
8. 12. 2008 14:53 Nový

Re: zmeny v pythonu

celé vlákno
Bloky kódu lze nahradit funkcemi
broukoid
broukoid (neregistrovaný)
8. 12. 2008 16:06 Nový

Re: zmeny v pythonu

celé vlákno
prosim vysvetlit.. mozna to chapu, ale to by znamenalo takovou prasarnu ze si tuhle moznost odmitam pripustit..

co znamena "prace s bloky kodu" ?!?!
me
me (neregistrovaný)
8. 12. 2008 17:47 Nový

Re: zmeny v pythonu

celé vlákno
Ja tomu rozumim tak, ze v Pythonu se bloky definuji tim, ze se odsadi kod. V jinych jazycich neni formatovani zdrojaku kriticke a bloky se definuji nejakou konstrukci:

Pascal: begin, end
C/C++/AWK/Perl: slozene zavorky {}
Bash: while..done, if..fi, atd
Fortran: for:..#endfor, atd

Pokud nejste na Python zvykly, je definice bloku odsazovanim nezvykla a matouci. Osobne se mi to zda jako blby napad... Python znam malo, nepouzivam.
Sten
Sten (neregistrovaný)
8. 12. 2008 18:00 Nový

Re: zmeny v pythonu

celé vlákno
Mě to naopak přijde jako super řešení, protože ve většině curly bracket jazyků se stejně ty bloky kódu kvůli přehlednosti odsazují.
Ondrej SanTiago Zajicek
Ondrej SanTiago Zajicek (neregistrovaný)
8. 12. 2008 19:51 Nový

Re: zmeny v pythonu

celé vlákno
Jenze se muze nechat automaticky odsadit podle tech slozenych zavorek (nebo jineho explicitniho popisu struktury), coz se hodi obzvlast pri kopirovani kodu.
PetrZ
PetrZ (neregistrovaný)
8. 12. 2008 22:15 Nový

Re: zmeny v pythonu

celé vlákno
ja jsem prave rad za praci s bloky prave pomoci odsazeni
+ je to rychle
+ je to prehledne
+ uniformni kod (programator nemuze psat jako prase, nebo pouzivat svuj "unikatni" styl, takze orientace v cizim kodu je rychlejsi)

zavorky v C jeste preziju (nemusim v C tolik programovat)

ale za begin end bych vrazdil a jazyky typu pascal by lidi nemeli poustet kamkoliv dal nez z ucebnic (nebo pak vznikaji podobne hruzy jako visual basic etc.)
xx
xx (neregistrovaný)
8. 12. 2008 22:24 Nový

Re: zmeny v pythonu

celé vlákno
A co je hrozneho na begin a end?
Sten
Sten (neregistrovaný)
8. 12. 2008 23:53 Nový

Re: zmeny v pythonu

celé vlákno
Je to méně přehledné. Ty závorky se od ostatního kódu alespoň výrazně odlišují a i v jednodušších editorech to vysvicuje, odkud pokud sahá ten blok.
xx
xx (neregistrovaný)
9. 12. 2008 20:38 Nový

Re: zmeny v pythonu

celé vlákno
jenze kdyz pisete konstrukce typu end while / end if apod. tak aspon poznate, co se ukoncuje,
zatimco u } nic nepoznate
Sten
Sten (neregistrovaný)
9. 12. 2008 22:28 Nový

Re: zmeny v pythonu

celé vlákno
Zrovna v Pascalu u všeho bylo begin / end (žádné fi, done ani nic jiného závislého na počáteční podmínce), tak se nepoznalo taky nic, nebo vlastně kvůli nevysvicování souvisejících závorek ještě míň.
xx
xx (neregistrovaný)
11. 12. 2008 21:29 Nový

Re: zmeny v pythonu

celé vlákno
Treba v Ade se to ale pozna.
toj
toj (neregistrovaný)
23. 5. 2009 20:01 Nový

Re: zmeny v pythonu

celé vlákno
Pokud mate kratsi blok kodu, tak je ukoncujici "end if" a podobne vyrazy docela zbytecny. Pokud je kod bloku delsi tak prece neni problem na jeho konec pripsat komentar stylu #end if nebo #end while a tak dale. Begin a end je zlo nejvetsi, je to neprehledne, u zavorek {} clovek hned na prvni pohled vidi odkud kam ten blok saha. Zato begin a end snadno splyne s kodem pokud je za sebou nekolik kratsich prikazu. Taky to vypisovani je zbytecne zdlouhavy. Celkove mam z begin a end husi kuzi :-/
Sten
Sten (neregistrovaný)
8. 12. 2008 23:09 Nový

Re: zmeny v pythonu

celé vlákno

A co teprve, když někdo na začátek Céčkového zdrojáku napíše

#define begin {
#define end }

a potom píše v C-Pascalu

int main()
begin
    printf("Hello world!\n");
    return 0;
end
JS
JS (neregistrovaný)
9. 12. 2008 7:20 Nový

Re: zmeny v pythonu

celé vlákno
Zvlastni, ze se to zda jako blby napad vzdycky tem, co to nepouzivaji. V praxi je to totiz citelnejsi.

Doporucuji to zkusit, protoze v praxi zjistite, ze to neni vubec problem.

Jinak, pouzivat nejake #end a take neni dobry napad. Prekladac to nekontroluje, takze si clovek pak IMHO snaz nabehne.
BrandIt
BrandIt (neregistrovaný)
21. 1. 2009 12:52 Nový

Re: zmeny v pythonu

celé vlákno
Tak jste to asi pochopil dobře, opravdu se nejspíš jedná o kopírování kusů kódu z jednoho místa na druhé. :-)
Ať žije Hackles!
Miloslav Ponkrác aura:59
9. 12. 2008 14:26 Nový

Python udělal další krok dolů

celé vlákno
Díky těmto změnám brzy dojde k situaci, kdy nebude existovat žádný větší pořádně odladěný a léty prověřený program v Pythonu a pojede se skoro od nuly.

Podpora starší verze také nebude věčně, a hlavně jí věčně nebudou podporovat autoři knihoven.

Já tohle nevidím jako pokrok, protože jazyk, který po 17 letech existence není schopen zachovat zpětnou kompatibilitu, a je nucen syntaxi totálně rozkopat, je důkaz neserióznosti Pythonu. Pokud chtěl Python rozrývat syntaxi, měl to dělat první léta svého fungování, jazyk, který kašle na kompatibilitu poté co 17 let existuje dává za signál jenom jediné: nesvěřujte mu nic důležitého.

Představte si, že by toto třeba udělalo Céčko, nebo unixový shell. Najednou by se někdo rozhodl, že Céčko je třeba nekompatibilně překopat, a všech C programy včetně linuxového kernelu, a všech základních služebních programů je nutné přepsat a předělat. Myslím, že by MS slavil, protože Linux by z nich dlouhá léta nevyšel.
Miloslav Ponkrác aura:59
9. 12. 2008 14:27 Nový

Re: Python udělal další krok dolů

celé vlákno
zapomněl jsem dopsat konec: protože Linux by z nich dlouhá léta nevyšel z chyb, nespolehlivosti a pádů, než by ty změny odladil.
Inkvizitor
Inkvizitor (neregistrovaný)
9. 12. 2008 18:43 Nový

Re: Python udělal další krok dolů

celé vlákno
Nemaluj čerta na zeď. Python nebyl NUCEN totálně překopat syntaxi, jeho autoři prostě měli pocit, že design už poněkud zastaral. Rozhodně bych nechtěl, aby z Pythonu vznikla přeplácaná prasárna typu C++ nebo naopak kdyby se jazyk přestal vyvíjet, pokud vývoj pokročí kupředu.
Lael Ophir
Lael Ophir (neregistrovaný)
15. 12. 2008 2:59 Nový

převod kódu

celé vlákno
Chtěl bych se zeptat, jestli v případě popsaných změn existuje automatický nástroj pro převod zdrojáků do Pythonu 3.0. Kde nelze převod provést automaticky, čekal bych warning s poznámkou.
Sten
Sten (neregistrovaný)
15. 12. 2008 18:03 Nový

Re: převod kódu

celé vlákno
Existuje, jmenuje se 2to3
Lael Ophir
Lael Ophir (neregistrovaný)
15. 12. 2008 19:28 Nový

Re: převod kódu

celé vlákno
Pěkné, děkuji za info. Považuji za špatné, když převaděče neexistují.
Zasílat nově přidané příspěvky e-mailem