[python] Ternarni operator (was: Re: round v python 3.0)

Vlada Macek macek na sandbox.cz
Pondělí Únor 2 16:37:47 CET 2009


Jan Janech wrote:
> math.round = lambda num: math.floor(num+0.5) if num >= 0 else \
>                         -math.floor(-num+0.5)
Vida, dosud jsem nevedel, ze Python 2.5 zavedl ternarni operator.

Ve svych zdrojacich pouzivam formulaci

P and A or B

Nejcasteji pro vyber retezcu. Je to velmi strucne, citelne a
nevyhodnocuje zbyvajici argument.

Jen upozornuju, ze musite zajistit, ze A se nevyhodnoti jako False,
protoze jinak je vysledkem B. :-)

Narazil jsem jeste na jeden zajimavy trik:

(B, A)[bool(P)]

Trosku mene citelne, ale hlavne ma jiny efekt: Vyhodnocuje oba argumenty
a teprv pak vybira.

Tak pozor na to.

-- 
\//\/\
http://macek.sandbox.cz
http://www.easis.cz

------------- další část ---------------
A non-text attachment was scrubbed...
Name: macek.vcf
Type: text/x-vcard
Size: 517 bytes
Desc: [žádný popis není k dispozici]
URL: <http://www.py.cz/pipermail/python/attachments/20090202/191bfc31/attachment.vcf>


Další informace o konferenci Python