Názory k článku
Novinky v jazyce Python 3.0
Re: Závsr -> Záver
celé vláknoRE: Novinky v jazyce Python 3.0
celé vláknoRE: Novinky v jazyce Python 3.0
celé vláknoRE: Novinky v jazyce Python 3.0
celé vláknoRE: Novinky v jazyce Python 3.0
celé vláknoRE: Novinky v jazyce Python 3.0
celé vláknoRE: Novinky v jazyce Python 3.0
celé vláknoPohled versus iterátor
celé vláknoFaktické chyby
celé vláknose 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
Re: Faktické chyby
celé vláknohttp://docs.python.org/dev/3.0/whatsnew/3.0.html
jsou bytes immutable (pokud chcete mutable, je tam bytearray).
Re: Faktické chyby
celé vláknoVe 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í.
Re: Faktické chyby
celé vláknoHowever, 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.
JŠRe: Faktické chyby
celé vláknoRe: Faktické chyby
celé vláknoDlasi 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.
Re: Faktické chyby
celé vláknoRe: Faktické chyby
celé vláknoRe: Faktické chyby
celé vláknoRe: Faktické chyby
celé vlákno2. 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 :)
RE: Novinky v jazyce Python 3.0
celé vláknoPodpora Pythonu 2.6 tu ještě nějaký čas budeNení to tak, že 2.6 je samostatná řada, která bude podporována (pouze bugfixy) "stále"?
a co % ?
celé vláknofakt 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)
Re: a co % ?
celé vláknoRe: a co % ?
celé vlákno$ ./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.
Re: a co % ?
celé vláknoRe: a co % ?
celé vláknoRe: a co % ?
celé vláknoRe: a co % ?
celé vláknoPython 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?
Re: a co % ?
celé vláknoMal 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?
zmeny v pythonu
celé vlákno
for:
...
#endfor
tak se v nem pri kopirovani kusu kodu ztratim :)
Re: zmeny v pythonu
celé vláknoRe: zmeny v pythonu
celé vláknoco znamena "prace s bloky kodu" ?!?!
Re: zmeny v pythonu
celé vláknoPascal: 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.
Re: zmeny v pythonu
celé vláknoRe: zmeny v pythonu
celé vláknoRe: zmeny v pythonu
celé vlákno+ 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.)
Re: zmeny v pythonu
celé vláknoRe: zmeny v pythonu
celé vláknoRe: zmeny v pythonu
celé vláknozatimco u } nic nepoznate
Re: zmeny v pythonu
celé vláknoRe: zmeny v pythonu
celé vláknoRe: zmeny v pythonu
celé vláknoRe: zmeny v pythonu
celé vláknoA 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
Re: zmeny v pythonu
celé vláknoDoporucuji 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.
Re: zmeny v pythonu
celé vláknoAť žije Hackles!
Python udělal další krok dolů
celé vláknoPodpora 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.

