Re: [python] jméno typu

2006-11-13 Tema obsahu superman
 Je to zle v pythone... Nedokaze to rozparsovat, nakolko 3. bere ako 
 zaciatok desatinneho cisla
 ale:
 (3).__add__(4)
 uz ide

Díky, takže špatný parser v Pythonu. Ale tahle obezlička stačí.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Jakub Hegenbart
Petr Prikryl wrote:
 Jde o to, že Python může k reduce a lambda nabídnout 
 alternativy, které nelze srovnávat s primitivností 
 podmíněného skoku. Ty alternativy mi připadají lepší
 než reduce/lambda.
Dobře, tohle mě zajímá: Jakou alternativu nabízí Python k foldl (které 
si přejmenoval na „reduce“)? U map je to jasné, přeci jen list 
comprehension ani generator expression nejsou o moc horší, navíc 
generator expression má lazy sémantiku, což je Good Thing(TN). Ale u 
toho reduce() trošku tápu.

Jakub Hegenbart
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Jan Matejka
 Dobře, tohle mě zajímá: Jakou alternativu nabízí Python k 
 foldl (které si přejmenoval na reduce)? U map je to jasné, 
 přeci jen list comprehension ani generator expression nejsou 
 o moc horší, navíc generator expression má lazy sémantiku, 
 což je Good Thing(TN). Ale u toho reduce() trošku tápu.

Taky jsem tápal, ale GvR mi to objasnil na zmíněné stránce:
http://www.artima.com/weblogs/viewpost.jsp?thread=98196

So now reduce(). This is actually the one I've always hated most, because,
apart from a few examples involving + or *, almost every time I see a
reduce() call with a non-trivial function argument, I need to grab pen and
paper to diagram what's actually being fed into that function before I
understand what the reduce() is supposed to do. 

Zrušením reduce() GvR chrání americké lesy.
Jan Matějka

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu superman
 So now reduce(). This is actually the one I've always hated most, because,
 apart from a few examples involving + or *, almost every time I see a
 reduce() call with a non-trivial function argument, I need to grab pen and
 paper to diagram what's actually being fed into that function before I
 understand what the reduce() is supposed to do. 
 
 Zrušením reduce() GvR chrání americké lesy.

Myslím, že by se uplatnil v politice a jako právník. Taktéž bych rád 
prozkoumal zákulisní spojení mezi organizací greenpeace a GvR. :-)

Miloslav Ponkrác
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Roman Miklos
Tiez som cital, co napisal Guido
v tom clanku
All Things Pythonic
The fate of reduce() in Python 3000
http://www.artima.com/weblogs/viewpost.jsp?thread=98196

Ale rozumel som z toho akurat ...blabla...reduce()...blabla..., teda 
ziadne dovody.

Aj ked reduce pouzivam len v spojeni s glob(), prave preto, ze toto 
pouzitie  uvadzaju v kapitole 9 knihy
http://www.grada.cz/katalog/kniha/naucte-se-python/ (pozri priklad dole) 
povazoval som pouzite reduce() za pytonicke.
Naopak Guido sa teraz snazi v tom horeuvedenom clanku s nadpisom 'All 
Things Pythonic' povedat asi to, ze reduce() nie je pytonicky.

Kazdopadne si myslim. ze reduce() ma opodstatnenie, kto tomu rozumie, moze 
robit veci elegantnejsie. 
Tu je par jednoduchych prikladov na reduce():

--- reduce.py ---
# reduce(function, list [, init_val]) 
# aplikuje fukciu 2 argumentov na prvky zoznamu zlava do prava, 
# t.j. tak, aby sa zoznam zredukoval na jednu hodnotu.
# S init_val mozno zadat inicializacnu hodnotu
# Napriklad:
# reduce(lambda x,y:x+y,range(1,6),5) 
# vypocita 5+(1+2)+3)+4)+5))=20.

# priklady:


# suma 1,..,n
suma1=lambda n: reduce(lambda x,y: x+y, range(n+1))
print suma(%d)=%d %(5, suma1(5))


# suma zoznamu
suma2=lambda l:  reduce(lambda x,y: x+y, l)
l = range(6)
print suma(%s)=%d % (l, suma2(l))


# faktorial
faktorial=lambda n: reduce(lambda x,y: x*y, range(2, n+1), 1)
print faktorial(%d)=%d % (0, faktorial(0))
print faktorial(%d)=%d % (5, faktorial(5))


# Globbing - rozvinut wildcards ?, * v cestach k suborom
import sys, operator, glob
arguments = sys.argv[1:]
# ak su zadane nejake command-line argumenty (napr. editor.py oop1*.* 
*.py~)
if arguments:
 
  # pouzitie reduce()
  filez = reduce(lambda x,y: x+y, map(glob.glob, arguments))
  print filez

  # bez pouzitia reduce()
  filez=[]
  for arg in arguments:
arg_list=glob.glob(arg)
filez += arg_list
  print filez
--- koniec ---

Myslim, ze reduce() nebude nahradeny nijakou inou alternativou. Jednoducho 
to co reduce() robil za teba, budes musiet naprogramovat.




Jakub Hegenbart [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
13.11.2006 15:34
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






Petr Prikryl wrote:
 Jde o to, že Python může k reduce a lambda nabídnout 
 alternativy, které nelze srovnávat s primitivností 
 podmíněného skoku. Ty alternativy mi připadají lepší
 než reduce/lambda.
Dobře, tohle mě zajímá: Jakou alternativu nabízí Python k foldl (které 
si přejmenoval na ?reduce?)? U map je to jasné, přeci jen list 
comprehension ani generator expression nejsou o moc horší, navíc 
generator expression má lazy sémantiku, což je Good Thing(TN). Ale u 
toho reduce() trošku tápu.

Jakub Hegenbart
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Roman Miklos
Guido najprv vsetko co sa dalo prebral z inych jazykov (Perl,...) a musim 
povedat, ze sa mu to podarilo dobre sklbit dokopy.
Ale teraz nastal obrat v jeho mysleni a chce zase robit v Pythone taketo 
cistky, to sa mi nepaci.

Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
bolo mozne namiesto

f = open(data.txt)
line = f.readline() 
while line:
  print line
  line = f.readline()
f.close()

napisat jednoducho ako v Perle a C++

f = open(data.txt)
while line = f.readline():
  print line 
f.close()

a keby praca s regularnymi vyrazmi bola taka flexibilna ako v Perle cez 
operator =~
napr.

line = A1A 1A1 BBBCCC
line =~ s/(\S{3})\s*/$1 /g
# vysledok: ine = A1A 1A1 BBB CCC

alebo

if riadok =~ /(\d{6}\/\d{3,4})/  :
  print riadok obsahuje rodne cislo

Vtedy by som Guida chvalil
:-)))
 



superman [EMAIL PROTECTED] 
Sent by: [EMAIL PROTECTED]
13.11.2006 18:24
Please respond to
Konference PyCZ python@py.cz


To
Konference PyCZ python@py.cz
cc

Subject
Re: [python] Buducnost Pythonu: lambda, map, filter






 Naopak Guido sa teraz snazi v tom horeuvedenom clanku s nadpisom 'All 
 Things Pythonic' povedat asi to, ze reduce() nie je pytonicky.

To je jako boj za čistou rasu. Navrhuji zastřelit GvR, než bude ještě 
více despotický ve svým rozhodnutích. Protože já jeho argumenty začínám 
považovat ... za trochu subjektivní.

Podmíněné přiřazení není v Pythonu, protože to příliš připomíná C.

Přiřazení není výrazem, protože to připomíná C (i když s tímto možná i 
trochu souhlasím).

Funkctionální věci příliš připomínají Lisp, nebo Scheme.

Já bych navrhnul, aby GvR dostal doživotní soudní zákaz s ostrahou učit 
se další programovací jazyky, jinak z Pythona zmizí úplně vše.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu superman
 Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
 bolo mozne namiesto
 
 f = open(data.txt)
 line = f.readline() 
 while line:
   print line
   line = f.readline()
 f.close()
 
 napisat jednoducho ako v Perle a C++
 
 f = open(data.txt)
 while line = f.readline():
   print line 
 f.close()

To bych taky uvítal, kdyby přiřazení bylo výrazem. Jak to jednou člověk 
pozná, nemůže se bez toho obejít.

 a keby praca s regularnymi vyrazmi bola taka flexibilna ako v Perle cez 
 operator =~
 napr.
 
 line = A1A 1A1 BBBCCC
 line =~ s/(\S{3})\s*/$1 /g
 # vysledok: ine = A1A 1A1 BBB CCC
 
 alebo
 
 if riadok =~ /(\d{6}\/\d{3,4})/  :
   print riadok obsahuje rodne cislo

Zase bych to s Perlem nepřeháněl. Když napíšete:

if re.match('...',riadok):
   print riadok obsahuje rodne cislo

Nezmnožoval bych to co není nutné.

Ale hlavně bych se dnes už držel zpětné kompatibility a hlavně už bych 
neopisoval nic z Perlu. Perl není IMHO dobře navržený jazyk. Docela bych 
věřil že GvR převzal z Perlu i tu pitomost, že Larry připravuje Perl 6 
nekompatibilní s předhcozími verzemi. Jenže tady se zapomíná, že Perl je 
a vždycky zůstane malým skriptovacím jazykem a sotva kdy se v tom napíše 
něco většího (výjimky potvrzující pravidlo pomiňme), protože zkrátka 
udržoval větší projekt v Perlu není jednoduché.

Upřímně řečeno, kdybych v době kdy jsem se začal zajímat o Python věděl, 
že se připravuje další zpětně nekompatibilní verze Pythona, do učení 
Pythonu bych se nepustil a učil bych se něco jiného. Bohužel Python je 
tak dobrý jazyk, že se mi od něj nechce odcházet.















___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Buducnost Pythonu: lambda, map, filter

2006-11-13 Tema obsahu Petr Přikryl
Roman Miklos napsal(a):
 Radsej by som naopak uvital keby sa preberalo stale viac, napriklad keby
 bolo mozne namiesto
 
 f = open(data.txt)
 line = f.readline() 
 while line:
   print line
   line = f.readline()
 f.close()
 
 napisat jednoducho ako v Perle a C++
 
 f = open(data.txt)
 while line = f.readline():
   print line 
 f.close()

Já raději píšu

f = open(data.txt)
for line in f:
 print line
f.close()


pepr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] vzor Observer a predavani metody v parametru

2006-11-13 Tema obsahu Ondrej Penicka
Zdravim,

pri implementaci vzoru observer jsem narazil na problem s predavanim
metody vychozi tridy vsech pozorovatelu. Subjekt je trida sledovaneho
objektu, Observer vzorova trida pro pozorovatele a ConcreteObserver
priklad pozorovatele. Zadrhel je v tride myList, ktera udrzuje seznam
pozorovatelu a definuje funkci call, ktera pro kazdou polozku zavola
predanou funkci (Observer.update). Pri volani predane funkce s objektem
jako parametr (namisto self) se samozrejme vola funkce Observer.update
namisto ConcreteObserver.update i kdyz self ukazuje na instanci
ConcreteObserver.

class myList:
   def call(self, function, subject):
  for item in self.list:
 function(item, subject);

class Subjekt:
   def __init__(self):
   self.observers = myList
   def updateAll(self):
  self.myList.call(Observer.update, self)

class Observer:
   def update(self, subjekt):
  print virtual Observer method called

class ConcreteObserver(Observer):
   def update(self, subjekt):
  print change something

Neprilis elegantni reseni je v metode Observer.update volat
self.update_real()

class Observer:
   def update(self, subjekt):
  self.update_real(subjekt)

class ConcreteObserver(Observer):
   def update_real(self, subjekt):
  print change something

Pravdepodobne je to dusledek toho, ze se v pythonu i trida chova jako
objekt.
Neni nejake lepsi reseni, aniz bych zasahoval do tridy myList?

Diky, Ondrej Penicka

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] OT: Pridat nebo odebrat? (bylo Buducnost Pythonu: lambda, map, filter)

2006-11-13 Tema obsahu Petr Prikryl
superman
 [...]
 pepr
  Kdo to řekl... Dokonalé to není tehdy, když už tam nejde
  nic přidat. Dokonalé je to tehdy, když už nejde nic odebrat.
 
 Proto se také vyhýbám dokonalým jazykům jako je Lisp. Až opravdu budu 
 chtít minimalistický jazyk, tak nic lepšího, než Lisp neseženete. Tam 
 opravdu nic neodeberete a je to velmi kompaktní a logický jazyk.
 
 Tedy logicky, lidi, které uspokojí tahle teorie o tom, že 
 nemá jít nic odebrat už dávno propagují Lisp a Scheme. 
 Tyhle lidi Python fakt neuspokojí.

Když se kdysi někdo se Stroustrupem dohadoval o přednostech
Smalltalku, ten mu na to odpověděl: OK. Jestli chcete
používat Smalltalk, používejte Smalltalk: Smalltalk je 
nejlepší Smalltalk, který tady je.

 Mimochodem tahle teorie o odebírání zcela zanedbává
 jednu oblast lidského konání - a to krásu, estetiku, 
 umění a design. Předpokládám, že i Váš domov není 
 zařízen podle hesla, že bude dokonalý až z něho nelze 
 nic odebrat, neboť holobyt asi není Váš ideál. 
 A analogicky si totéž myslím o programovacím jazyku.

Já to tušil, Miloslave. Píšeš rychleji, než čteš a čteš
rychleji, než myslíš. Že ty sis nedočetl ty tečky
až do konce. A ne. Nepřidám si do obýváku další 
křeslo a vázy. :-  ROTFL

pepr

P.S. nic ve zlém...
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] vzor Observer a predavani metody v parametru

2006-11-13 Tema obsahu Petr Prikryl
Na téhle stránce jsem narazil na ukázku z původní 
publikace Design Patterns
http://www.research.ibm.com/designpatterns/example.htm

A řešení najdeš na 
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/131499
včetně demonstračního příkladu. 

Podle mého názoru je zbytečné zavádět class myList a metodu call.
Observer pattern definuje rozhraní zúčastněných tříd, což znamená,
že některé metody mají dohodnuté jméno a význam. Do seznamu
pozorovatelů je zbytečné přidávat odkaz na metodu, když tam
může být uložen přímo odkaz na objekt.

Ondrej Penicka
 pri implementaci vzoru observer jsem narazil na problem s predavanim
 metody vychozi tridy vsech pozorovatelu. Subjekt je trida sledovaneho
 objektu, Observer vzorova trida pro pozorovatele a ConcreteObserver
 priklad pozorovatele. Zadrhel je v tride myList, ktera udrzuje seznam
 pozorovatelu a definuje funkci call, ktera pro kazdou polozku zavola
 predanou funkci (Observer.update). Pri volani predane funkce 
 s objektem
 jako parametr (namisto self) se samozrejme vola funkce Observer.update
 namisto ConcreteObserver.update i kdyz self ukazuje na instanci
 ConcreteObserver.
 
 class myList:
def call(self, function, subject):
   for item in self.list:
  function(item, subject);
 
 class Subjekt:
def __init__(self):
self.observers = myList
def updateAll(self):
   self.myList.call(Observer.update, self)
 
 class Observer:
def update(self, subjekt):
   print virtual Observer method called
 
 class ConcreteObserver(Observer):
def update(self, subjekt):
   print change something
 
 Neprilis elegantni reseni je v metode Observer.update volat
 self.update_real()
 
 class Observer:
def update(self, subjekt):
   self.update_real(subjekt)
 
 class ConcreteObserver(Observer):
def update_real(self, subjekt):
   print change something
 
 Pravdepodobne je to dusledek toho, ze se v pythonu 
 i trida chova jako objekt. Neni nejake lepsi reseni, 
 aniz bych zasahoval do tridy myList?

pepr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python