[python] dokumentace k novejsim rysum jazyka

RMiklos na pss.sk RMiklos na pss.sk
Pátek Březen 5 14:34:07 CET 2010


> v tom případě by mělo fungovat i
> >>> a=i*i for i in range(3)
> jinak je to chaos


Nenazyva sa to "chaos" ale "syntactic sugar" 
:-)

Na druhej strane, ak by fungovalo toto

a=i*i for i in range(3)

tak to by si mohol zas niekto vysvetlovat, ze to je to iste ako toto

>>> for i in range(3):
...     a=i*i

kde a je vlastne premenna do ktorej sa priradi i*i. V skutocnosti ma 
premenna ale ukazovat na objekt typu generator 

>>> a
<generator object at 0x00DFEF30>



Dalej ale, ak sa da namiesto

>>> sum((i*i for i in range(3)))
5

zjednodusene napisat aj toto 

>>> sum(i*i for i in range(3))
5

tak clovek by ocakaval, ze aj namiesto

>>> sum((1, 2, 3))
6

sa bude dat zjednodusene napisat iba toto

>>> sum(1, 2, 3)
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: sum expected at most 2 arguments, got 3

Ako vidiet, toto ale nefunguje.







From:   David Rohleder <davro na ics.muni.cz>
To:     Konference PyCZ <python na py.cz>
Date:   05.03.2010 12:45
Subject:        Re: [python] dokumentace k novejsim rysum jazyka
Sent by:        python-bounces na py.cz



RMiklos na pss.sk píše v Pá 05. 03. 2010 v 10:31 +0100:
> >problém je v tomto:
> >
> >sum je standardní funkce:
> >
> >>>> sum(i**i for i in range(10))
> >
> >tady mně to prostě uniká - když závorky patří funkci sum, tak vnitřek
> by
> >měl být uzavřený do závorek taky.
> 
> funguje to takto 
> >>> sum(i*i for i in range(3)) 
> 5 
> alebo aj takto ked je vnutrajsok funkcie sum() uzavrety do zatvoriek: 
> >>> sum((i*i for i in range(3))) 
> 5 
> 

v tom případě by mělo fungovat i

>>> a=i*i for i in range(3)

jinak je to chaos

> 
> 
> 
> 
> From:        David Rohleder <davro na ics.muni.cz> 
> To:        Konference PyCZ <python na py.cz> 
> Date:        05.03.2010 08:00 
> Subject:        Re: [python] dokumentace k novejsim rysum jazyka 
> Sent by:        python-bounces na py.cz 
> 
> ______________________________________________________________________
> 
> 
> 
> Jirka Vejrazka píše v Pá 05. 03. 2010 v 01:01 +0100:
> > > čili se to chová jinak než standardní tuple, je to spíš něco, čemu
> se říká generátor.
> > 
> > Nojo, vida - to jsem nevedel, ze s kulatymi zavorkami to vytvori
> > generator, diky :)
> > 
> > Generator ma tu vyhodu, ze se nic nevytvari v pameti. Zrejme je to,
> > kdyz se pouzije misto range (ktery interne dela list) funkce xrange
> > (coz je taky generator) - tohle plati pro Python 2.4 ktery ted mam
> > spusteny, v novejsich uz je to mozna jinak)
> > 
> > >>> a = [x for x in xrange(100000000)]  # vytvori v pameti list,
> ktery ma 100 milionu prvku (bude chvili trvat)
> > >>> a = (x for x in xrange(100000000)]  # bleskove vytvori
> generator, ktery po zavolani a.next() najde a vrati "dalsi prvek v
> poradi"
> > 
> > >>>> b=(1,2,3)
> > >>>> b.next()
> > > Traceback (most recent call last):
> > >  File "<stdin>", line 1, in <module>
> > > AttributeError: 'tuple' object has no attribute 'next'
> > 
> > Tohle uz je logicke, to je normalni tuple.
> > 
> > > Mně se takové věci celkem líbí, ale připadne mně to nějak
> nedomyšlené,
> > > protože by celý ten generátor měl tvořit samostatnou syntaktickou
> > > jednotku, tj. interpret by měl nějak sežrat zápis
> > >
> > >>>> i*i for i in range(10)
> > 
> > Proc, tady nejsou okolo zavorky, je to syntakticky neco uplne
> jineho...
> > 
> 
> problém je v tomto:
> 
> sum je standardní funkce:
> 
> >>> sum(i**i for i in range(10))
> 
> tady mně to prostě uniká - když závorky patří funkci sum, tak vnitřek
> by
> měl být uzavřený do závorek taky.
> 
> D.
> 
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
> 
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python


_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20100305/249c9b0f/attachment.html>


Další informace o konferenci Python