Slovíčko kontroverzní se ve zprávičce objevilo nikoli proto, že bych považoval tuto funkci za špatnou, ale proto, že diskuze o jejím začlenění byla dlouhá a divoká. Dle jedné strany je to skvělá vymoženost, druzí tvrdí, že se jazyk zbytečně komplikuje a nabaluje se na něj hromada zbytečností, jen aby se něco měnilo. Stačila chvilka a už i tady pod zprávičkou se našly oba názory. Podobných debat jsou plné internety.
Diskuze o tom, jestli mrož bude, nebo nebude v Pythonu, byla tak vyčerpávající, že Guido van Rossum rezignoval na post benevolentního diktátora: „Now that PEP 572 is done, I don't ever want to have to fight so hard for a PEP and find that so many people despise my decisions.“
Vsak na to kazde rozumnejsi cecko uz pres desetileti hazi warning, a mnohem davneji tusim Ludek Skocovsky (ale mozna se pletu) psal jako best practice "nepiste if (a == NULL), ale if (NULL == a) pro pripad preklepu"
Coz si myslim je dostatecne.
spousta konstrukci stylu while (0 < (i = read(....))) by byla daleko mene prehlednejsi.
ad automaticky break v case - opet, spoustu chyb by to vyresilo, spoustu prace jinde by to pridalo. Konstrukce
switch () {
case 1:
case 2:
some_extra_check();
case 3:
case 4:
do_common_work_1_4();
break;
je v praxi pouzivana dost casto, a obvykle v mistech kde to dava smysl i pro prehlednost.
V C funguje přiřazení jako expression (např zde: https://stackoverflow.com/a/16567677/3220468). Ale souhlasím že to není chování, které by měla většina jazyků.
Takové obecné prohlášení je docela bezcenné. Kupříkladu mroží operátor řeší minimálně dva jednoznačné deficity dosavadního Pythonu a to absenci cyklu do-while a nemožnost najednou vytáhnout v list comprehension/generator expression hodnotu pro porovnání i přiřazení. Ano, jde to i bez toho, ale bylo to tristní.
Jistě je možné, že Ti něco konkrétního přijde navíc, ale Python v trojkové verzi naopak zbytečnosti zlikvidoval - příkladem jsou dva druhy tříd.
Děkuji za názornější příklad, dělal jsem to v rychlosti a úplně mě nedošlo udělat stejný příklad jako nahoře.
O podtržítku jsem nevěděl, ale pro zajímavost jsem si to vyzkoušel. Ve Squeak(u) 5.2 to vezme úplně normálně. V Smalltalk/X vyběhne ByteCodeCompiler warning "Old style assigment". Ostatní jako Pharo, Dolphin už vůbec nevědí o čem je řeč :). Člověk se pořád učí.