Portál AbcLinuxu, 26. dubna 2024 07:16


Python 3.8.0

Po více než roce a čtvrt od vydání verze 3.7.0 byla vydána nová verze 3.8.0 programovacího jazyka Python. Přehled novinek v aktualizované dokumentaci. Podrobný přehled změn v Changelogu.

15.10.2019 01:33 | Ladislav Hagara | Nová verze


Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

15.10.2019 08:40 _
Rozbalit Rozbalit vše Re: Python 3.8.0
Odpovědět | Sbalit | Link | Blokovat | Admin
Kudos for walrus
16.10.2019 00:18 foobar
Rozbalit Rozbalit vše Re: Python 3.8.0
Kudos for http://hylang.org/
krab1k avatar 15.10.2019 11:42 krab1k | skóre: 11 | Brno
Rozbalit Rozbalit vše Re: Python 3.8.0
Odpovědět | Sbalit | Link | Blokovat | Admin
Já bych ocenil přidat ještě něco jako:
for x in c if x > 0:
   pass
Bedňa avatar 15.10.2019 11:45 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Python 3.8.0
Range?
KERNEL ULTRAS video channel >>>
Heron avatar 15.10.2019 13:55 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Python 3.8.0
List comprehension.

[func(x) for x in c if x > 0]
15.10.2019 14:26 Kate | skóre: 9
Rozbalit Rozbalit vše Re: Python 3.8.0
Nebo to napsat jako generator expression.

for i in (x for x in c if x > 0):
    pass
krab1k avatar 15.10.2019 14:29 krab1k | skóre: 11 | Brno
Rozbalit Rozbalit vše Re: Python 3.8.0
Jo, už jsem psal níže. To funguje, jen to IMHO není hezké.
Heron avatar 15.10.2019 14:46 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Python 3.8.0
Jasně. No záleží, kam až si dovolíme zajít. Protože tady je generátor vytvořen ještě před tím cyklem a ta podmínka je neměnná.

Ale co třeba (použiju jeho syntaxe) toto:
for x in c if x > limit:
   limit = f(x)
   ...
Tj argument podmínky se může měnit s každým cyklem.
krab1k avatar 15.10.2019 15:07 krab1k | skóre: 11 | Brno
Rozbalit Rozbalit vše Re: Python 3.8.0
Že by se mohla ta podmínka měnit, to mě nenapadlo. Tam už bych já osobně ten explicitní if v těle cyklu považoval za čitelnější. To už je asi věc vkusu.
krab1k avatar 15.10.2019 14:28 krab1k | skóre: 11 | Brno
Rozbalit Rozbalit vše Re: Python 3.8.0
Co když v tom těle cyklu budu chtít mít třeba ještě print a něco dalšího? Ta podmínka samozřejmě může být libovolná.

Funguje třeba tohle, ale fakt se mi to nelíbí:
for x in (x for x in c if x > 0):
    print(x)
    func(x)

Heron avatar 15.10.2019 14:41 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Python 3.8.0
Co když v tom těle cyklu budu chtít mít třeba ještě print a něco dalšího?
Tak to tělo toho foru dáš do funkce func a bude to fungovat stejně. Ale jasně, ne vždy dává smysl převod na comprehension a někdy jsou mezi jednotlivými běhy toho cyklu nějaká provázání.

Na druhou stranu:
for x in c if x > 0:
   pass
Odpovídá:
for x in c:
    if x <= 0:
        continue

    pass
Ale chápu o co ti jde. Elegantně to filtrovat přímo v tom foru a ne explicitně v těle. Zrovna ta tebou navrhovaná syntax by mě neurážela.
FrostyX avatar 15.10.2019 14:19 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc
Rozbalit Rozbalit vše Re: Python 3.8.0
Odpovědět | Sbalit | Link | Blokovat | Admin
Jsem jediný, komu se příčí print(f"Hello {foo}")?
FrostyX.cz | 1984 was not supposed to be an instruction manual.
Heron avatar 15.10.2019 14:29 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Python 3.8.0
Myslíš f-stringy? Mě se to líbí. Je to názornější než % a výrazně kratší než "".format().
15.10.2019 14:59 lazywriter
Rozbalit Rozbalit vše Re: Python 3.8.0
Taky je od 3.6 pouzivam. Zapis .format(foo=foo) mi prijde o dost hur citelny.
15.10.2019 15:04 hacup | skóre: 8
Rozbalit Rozbalit vše Re: Python 3.8.0
Ano :)

Založit nové vláknoNahoru


ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.