Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%)
|
Witam.
Od paru dni próbuję zapoznać się z tematyką Pythona. Przeczytałem pare artykułów, posiedziałem na forach itp. I nadal do końca niewiem do czego on tak naprawde służy, co ma takiego co innym językom brakuję. Bardzo proszę o przedstawienie mi tematyki Pythona tak na chłopski rozum. Jego zalty i wady oraz w czym ułatwie prace. Pozdrawiam i z góry dziękuje, Łukasz. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%)
|
Nie napisałem, że w Pythonie się bardziej myśli, tylko łatwiej się myśli (łatwiej przetłumaczyć sobie myśli na kod pythona).
Teraz tutaj Model drzewka jaki sobie ostatni stworzyłem: Kod from sqlobject import * from connection import * from string import join from exceptions import KeyError class Node(SQLObject): name = StringCol(length=100) parent = ForeignKey('Node', default=None) features = MultipleJoin('Feature') content = ForeignKey('Content', default=None) children = MultipleJoin('Node', joinColumn='parent_id') parentNameInd = DatabaseIndex('parent', 'name', unique=True) parentInd = DatabaseIndex('parent') def _get_path(self): nodes = [] r = self while r is not None: nodes.append(r.name) r = r.parent nodes.append('') nodes.reverse() return join(nodes, '/') def __getitem__(self, key): for f in self.features: if f.name == key: return f.value raise KeyError('Feature %s not found!' % key) def __setitem__(self, key, val): for f in self.features: if f.name == key: f.value = val return Feature(name=key, value=val, node=self) def __delitem__(self, key): for f in self.features: if f.name == key: f.destroySelf() return raise KeyError('Feature %s not found!' % key) class Feature(SQLObject): node = ForeignKey('Node') name = StringCol(length=20) value = StringCol(length=100) nodeIdNameInd = DatabaseIndex('node', 'name', unique=True) class Content(SQLObject): content = StringCol() nodes = MultipleJoin('Node') Jestem ciekawy ile zajęłoby stworzenie podobnego modelu w PHP i czy byłby kiedykolwiek tak funkcjonalny. Tutaj algorytm dzielenia pliku z napisami na trzy części - w php chyba trzeba by się z tym bardziej pomęczyć, co? Kod import string, datetime fpr=open("lotr3.txt") fpw1=open("lotr3_1.txt", "w") fpw2=open("lotr3_2.txt", "w") fpw3=open("lotr3_3.txt", "w") dts=[[fpw1, datetime.datetime(2000, 1, 1, 0, 0)] , [fpw2, datetime.datetime(2000, 1, 1, 1, 25)] , [fpw3, datetime.datetime(2000, 1, 1, 2, 35)]] dts.reverse() dt0=datetime.datetime(2000, 1, 1, 0, 0) for l in fpr.xreadlines(): arr=l.split(":") ddt=dt0+datetime.timedelta(hours=int(arr[0]), minutes=int(arr[1]), seconds=int(arr[2])) for try_ in dts: if ddt>=try_[1]: try_[0].write((dt0+(ddt-try_[1])).strftime("%H:%M:%S:")+string.join(arr[3:], ":")) break fpr.close() fpw1.close() fpw2.close() fpw3.close() Tutaj dalej mała klasa implementująca nowy język do robienia porównań Kod # author: Adam Wieckowski <mail> Polecam głównie linijkę 35 - tak apropo programowania funkcjonalnego.# date: 07.01.2007 from re import compile from fnmatch import * class StringConstraint: def __init__(self, op, pattern): # 0 - equals caseinsensitive, 1 - equals casesensitive # 2 - fnmatch, 3 - fnmatchcase, 4 - regexp if op[0] == "!": self.__passMap = {True: False, False: True} op = op[1:] else: self.__passMap = {True: True, False: False} match = {"==":0, "=*":1, "likei":2, "like":3, "=~":4}[op.lower()] self.__match = match self.__pattern = (match == 4) and compile(pattern) or pattern # /def __init__(self, pattern, op): def Evaluate(self, str): # # the readable way (long way/wrong way) # if self.__match == 0: # retVal = str.lower() == self.__pattern.lower() # elif self.__match == 1: # retVal = str == self.__pattern # elif self.__match == 2: # retVal = fnmatch(str, self.__pattern) # elif self.__match == 3: # retVal = fnmatchcase(str, self.__pattern) # elif self.__match == 4: # retVal = not self.__pattern.match(x) == None # return self.__passMap[retVal] # the one-statement-one-eval way return self.__passMap[ \ [ (lambda x: x.lower() == self.__pattern.lower()) \ , (lambda x: x == self.__pattern) \ , (lambda x: fnmatch(x, self.__pattern)) \ , (lambda x: fnmatchcase(x, self.__pattern)) \ , (lambda x: not self.__pattern.match(x) == None)] \ [self.__match](str)] # # the one-statement-all-eval way # return self.__passMap[ \ # [ str.lower() == self.__pattern.lower() \ # , str == self.__pattern \ # , fnmatch(str, self.__pattern) \ # , fnmatchcase(str, self.__pattern) \ # , type(self.__pattern) is not type("") and not self.__pattern.match(str) == None or False] \ # [self.__match]] # /def Evaluate(self, str): # /class StringConstraint: def StringConstraintParse(str): for op in ["likei", "like", "=~", "=*", "=="]: parts = str.split(op, 1) if len(parts) == 2: break if len(parts) == 1: raise Exception("Unknown operator.") if parts[0][-1] == "!": # negation op = "!" + op parts[0] = parts[0][:-1] if parts[0][-1] == "\\": # lets be able to escape the operator s, p = StringConstraintParse(parts[1]) parts[0] = parts[0] + op + s else: p = StringConstraint(op, parts[1].strip()) return (parts[0].strip(), p) # /def StringConstraintParse(str): def StringConstraintEvaluate(str): # shortcut str, p = StringConstraintParse(str) return p.Evaluate(str) # /def StringConstraintEvaluate(str): Te trzy przykłady to różne możliwości zastosowania Pythona, które pokazują mam nadzieję główne różnice w zastosowaniu w przeciwieństwie do PHP. Jeżeli chodzi o zdanie z funkcjonalnym programowanie to jest opinia subiektywna - osobiście po prostu nabardziej lubię to podejście do programowania. Mam nadzieję, że podane przykłady unaoczniają jak można w Pythonie zaimplementować algorytmy w kilku dosłownie linijkach. Pozdrawiam. I weźcie poprawkę, że to są wszystko subiektywne opinie. Ten post edytował Jabol 1.02.2009, 12:48:52 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%)
|
Teraz tutaj Model drzewka jaki sobie ostatni stworzyłem: Kod ... Jestem ciekawy ile zajęłoby stworzenie podobnego modelu w PHP i czy byłby kiedykolwiek tak funkcjonalny. Możliwość obsługi drzew w Propelu. Propel ma swoje ograniczenia ale ma i zalety - nie piszesz kodu, którego nie musisz. Tutaj algorytm dzielenia pliku z napisami na trzy części - w php chyba trzeba by się z tym bardziej pomęczyć, co?
Tutaj dalej mała klasa implementująca nowy język do robienia porównań Jedno pytanie, po co? Czy w praktyce wykorzystałeś ten kod? Czy kilka klas to nowy język czy też może rozszerzenie języka? Chodzi o to by nazywać rzeczy po imieniu, bez marketingowego szumu (tj Collections framework w Javie czy też krotki, list i słowniki w Pythonie - wszystko to po prostu kolekcje). |
|
|
|
misiek172 Python 19.03.2007, 11:37:12
nasty_psycho Witam,
Ja osobiście nie znam python-a, ale z tego ... 19.03.2007, 12:34:08
wolan misiek172: do czego potrzebujesz tego Pythona?
na... 21.03.2007, 16:32:37
Fipaj Panowie, po prostu wstyd ;-)
http://pl.wikipedia.o... 21.03.2007, 18:22:44
Jabol Python jest po prostu niesamowity. Porównywanie te... 21.03.2007, 18:34:22
son Jabol dałeś świetną recenzję... aż wypada poznać p... 21.03.2007, 18:46:56
Fuzja Książka Python od podstaw.
Traktuje od podstaw czy... 21.03.2007, 18:51:29
wolan tutorial i potem Dive into Python. A potem jak chc... 21.03.2007, 19:34:32
splatch A ja powiem tylko, że oprócz wielkich zachwytów i ... 22.03.2007, 00:03:32
nasty_psycho Cytatnasty_psycho: mała popularnosc? ohmy.gif obec... 22.03.2007, 11:07:33
Fuzja No składnia to akurat dziwna nie jest napewno...
W... 22.03.2007, 13:52:25 
splatch Cytat(Fuzja @ 22.03.2007, 13:52:25 ) ... 22.03.2007, 14:28:35 
mike_mech Cytat(splatch @ 22.03.2007, 14:28:35 ... 22.03.2007, 14:37:54
Fuzja Mi składnia odpowiada.
Słuchajcie to nie... 22.03.2007, 14:47:43
Ociu Brakuje jeszcze wypowiedzi fana RoR, że Ruby ma co... 22.03.2007, 15:09:29
Fuzja Python:
Plusy:
- Działa na wszystkich platformach
... 22.03.2007, 15:30:04
nasty_psycho CytatChciałem tylko pokazać nasty_psycho, że są fi... 22.03.2007, 15:51:09
Fuzja Trustudio to nie jest nic ciekawego i wartego uwag... 22.03.2007, 16:13:32
nasty_psycho fuzja: Pamiętasz jak społeczność PHP tez stękała z... 22.03.2007, 16:21:18
Jabol Co do frameworków to muszę przyznać, ... 22.03.2007, 16:25:13
Fuzja Ja lubię nie mieć wyboru i korzystać z jednego ide... 22.03.2007, 16:45:53
Hacker Przejrzysta składnia?? Dla mnie składnia... 24.03.2007, 11:39:00
Fuzja No trudno żeby nie uraziła skoro uważasz, że robie... 24.03.2007, 12:06:09
nasty_psycho CytatNo trudno żeby nie uraziła skoro uważasz, że ... 24.03.2007, 16:35:20
Fuzja A mono to rzeczywiście zajebiście działa, na Twoje... 24.03.2007, 17:16:17
nasty_psycho CytatA mono to rzeczywiście zajebiście d... 24.03.2007, 17:35:55
Fuzja Co ma 2 cytat do trzeciego...
To jest ułatwienie r... 24.03.2007, 17:38:07
ferr Problem w tym kolego nasty, ze wydaje mi sie, ze T... 24.03.2007, 17:48:16
revyag Cytatw Pythonie pisze sie coraz wiecej (chocby gro... 24.03.2007, 17:56:16 
ano Cytat(revyag @ 24.03.2007, 17:56:16 )... 24.03.2007, 21:10:08
ferr ano: nadgorliwosc gorsza od faszyzmu ;-), ale zdaj... 24.03.2007, 21:39:12
sztosz Może kogoś przekona spojrzenie Bruce'a Eckel... 26.03.2007, 11:09:10 
Jabol Cytat(sztosz @ 26.03.2007, 12:09:10 )... 26.03.2007, 17:41:08
revyag Cytat(ano @ 24.03.2007, 22:10:08 ) ==... 26.03.2007, 17:24:31
Fuzja "Trzeba jednak niestety przyznać, że w polsce... 26.03.2007, 17:46:17 
Jabol Cytat(Fuzja @ 26.03.2007, 18:46:17 ) ... 26.03.2007, 18:18:07
wolan warto wspomniec jeszcze takie projekty, jak Jython... 26.03.2007, 17:47:01
Fipaj Takie rzeczy lepiej ustalić gdzieś publicznie, a n... 26.03.2007, 18:23:26
Jabol Ale przecież nie tutaj - to jest forum o php.... 26.03.2007, 18:42:10
hello.word Nie lubie PHP, strasznie mi się nie podoba. Odpowi... 26.03.2007, 22:02:38 
splatch Nie lubię Pythona, strasznie mi się nie podoba. Od... 26.03.2007, 22:16:02 
hello.word Cytat(splatch @ 26.03.2007, 21:16:02 ... 27.03.2007, 09:08:22 
mike_mech Cytat(hello.word @ 27.03.2007, 10:08... 27.03.2007, 09:34:52
sztosz Satysfakcję 27.03.2007, 00:05:29 
Jabol Cytat(sztosz @ 27.03.2007, 01:05:29 )... 27.03.2007, 05:22:45
splatch Panowie, może ktoś powie do czego ma prowadzić ta ... 27.03.2007, 06:26:07
kwiateusz Cytat(hello.word @ 26.03.2007, 23:02... 27.03.2007, 09:11:40 
sztosz Cytat(kwiateusz @ 27.03.2007, 10:11:4... 27.03.2007, 10:06:48 
hello.word Cytat(kwiateusz @ 27.03.2007, 08:11:4... 27.03.2007, 10:21:31
revyag Cytat(hello.word @ 27.03.2007, 10:08... 27.03.2007, 09:31:14
DeyV Kurcze - ale się temat zepsuł.
A tak ciekawie się... 27.03.2007, 10:27:16
nasty_psycho CytatMam honor PHP nie tykam! Dorobił sie... 27.03.2007, 15:46:48 
Jabol Cytat(nasty_psycho @ 27.03.2007, 16:46... 27.03.2007, 17:57:30
Fuzja nasty_psycho: chyba sobie kpisz, wolisz pisac w pe... 27.03.2007, 16:11:18
nasty_psycho CytatPoza tym python ma w sobie ogromny potencjał ... 27.03.2007, 16:18:01
Fipaj Ten temat śledzę już od dawna tylko dla dobrej zab... 27.03.2007, 16:31:40
Fuzja Jak dla mnie django jest lepszy niż RoR, wygodniej... 27.03.2007, 17:04:05
Riklaunim Ja przeszedłem na django/python i nie odczuwam chę... 27.03.2007, 18:52:02
sztosz Jabol dobrze napisał. Nie chodzi o to aby kogoś pr... 27.03.2007, 21:36:25
kwiateusz Czytam sobie ten temat od początku i na wstępie mi... 27.03.2007, 22:18:41
Fuzja Tak jak pisałem python od podstaw + python.rk.edu.... 27.03.2007, 22:52:34
kwiateusz a właśnie ktoś tam pisał po dr... 27.03.2007, 23:03:27
Fuzja nie moge zmienic sygnatury
Perl ma skladnie, ze h... 27.03.2007, 23:47:14
Jabol Jest taki kawał.
Rozmawiają dwaj programiści o per... 28.03.2007, 06:31:35 
Riklaunim Cytat(Jabol @ 28.03.2007, 07:31:35 ) ... 28.03.2007, 07:13:45
mike_mech Zainteresowaliście mnie. Choć może nie tyle zainte... 28.03.2007, 07:50:52
siemakuba Przyznam, że też się zaciekawiłem. Przyznam @Jabol... 28.03.2007, 08:32:39
kwiateusz JA tez sie chyba zainteresuje Dive Into Python tyl... 28.03.2007, 08:53:57
siemakuba @kwiateusz: w razie czego wikibooks nadciąga z pom... 28.03.2007, 09:00:21
Jabol Co do IDE...
osobiście pisze w kombie vim + i... 28.03.2007, 11:46:17
sztosz Może Komodo? http://www.activestate.com/products/k... 28.03.2007, 12:12:23
Hacker Ja również postanowiłem dać Nura w ... 28.03.2007, 12:19:01
Riklaunim ja tam jako IDE używam kate - edytor tekstowy z ko... 28.03.2007, 13:36:39
Turgon Riklaunim: Nawet się nie waż Bo w końcu wybiorę s... 29.03.2007, 17:25:15
sztosz A czemu? Ja bardzo chętnie przeczytam takie porówn... 29.03.2007, 21:08:06
occulkot Sam rowniez naleze do nawroconych z phpa na python... 29.03.2007, 21:29:35
Ace Z pół roku temu zainteresowałem sie Python'em,... 30.03.2007, 09:41:32
mike_mech Zgodnie z obietnicą zacząłem się uczyć Pythona. Ch... 2.04.2007, 09:20:22
NuLL Intefejsy w aplikacji produkcyjnej sie wywala a ab... 2.04.2007, 09:28:52 
mike_mech Cytat(NuLL @ 2.04.2007, 10:28:52 ) In... 2.04.2007, 09:54:29
athabus A właśnie miałem kupić książkę do Pythona... Ale j... 2.04.2007, 10:02:31 
Riklaunim Cytat(athabus @ 2.04.2007, 11:02:31 )... 2.04.2007, 10:36:45 
splatch Cytat(Riklaunim @ 2.04.2007, 11:36:45... 2.04.2007, 11:18:21
athabus splatch mnie uprzedził, więc nie będę go powtarzał... 2.04.2007, 11:58:37
sztosz Najpierw uprzedzę, że być może gówno wiem o progra... 2.04.2007, 14:47:00
athabus @sztos interfejsy dodają obiektowi je implementuja... 2.04.2007, 14:56:31
sztosz Czyli dobrze mi się wydaje że to ju... 2.04.2007, 15:07:12
nasty_psycho sztosz: dam Ci dwa przykłady w których u... 2.04.2007, 19:23:38
sztosz Ok co do klasy abstrakcyjnej się z tobą zgodzę że ... 2.04.2007, 21:42:23
athabus @sztosz - myślisz małą skalą :-) OOP chodzi o eleg... 2.04.2007, 21:58:02
mike_mech Panowie parafrazując słowa jednego z wi... 2.04.2007, 22:09:43
sztosz Hmm... ale te final, abstract etc... można zawrzeć... 3.04.2007, 00:54:35
Jabol Osobiście zgadzam się ze Sztosem. Ale może to po p... 3.04.2007, 18:13:31
Sedziwoj PHP konwertuje typy 'w locie' ale je rozpo... 3.04.2007, 18:44:25 
Jabol Cytat(Sedziwoj @ 3.04.2007, 19:44:25 ... 3.04.2007, 18:51:14
kwiateusz klasa abstrakcyjna dla mnie tez jest zbędna, ale i... 3.04.2007, 19:05:53
Sedziwoj abstrakcja dostarcza pewne metody dla danej grupy,... 3.04.2007, 19:21:24
Zeman Cytat(mike_mech @ 2.04.2007, 23:09:43... 3.04.2007, 20:24:04 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 18:01 |