abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 00:33 | Zajímavý článek
Navštíví-li uživatel Firefoxu 200 největších webů dle serveru Alexa s povolenou funkcí Ochrana proti sledování, bude mít na počítači o 67,5 % méně uložených cookies, čas načítání stránky se průměrně sníží o 44 % a o 39 % se přenese méně dat, než by tomu bylo ve výchozím nastavení. [Slashdot]
Ladislav Hagara | Komentářů: 0
včera 22:44 | Pozvánky
Fedora 22 Release Party proběhne v úterý 2. června od 18:00 v brněnské pobočce společnosti Red Hat (Purkyňova 99/71). Návštěvníci se mohou těšit na sérii přednášek o novinkách ve Fedoře 22, diskusi, neřízený networking atd. Na party budou volně k dispozici také propagační materiály, instalační DVD a občerstvení.
Ladislav Hagara | Komentářů: 0
včera 20:02 | Bezpečnostní upozornění
Seznamka pro dospělé Adult FriendFinder byla hacknuta. Byla vyzrazena osobní data 3,9 milionů registrovaných uživatelů. Mezi nimi jsou i uživatelé, jež svůj účet už dávno zrušili. V případě této seznamky probíhalo rušení účtů přidáním data zrušení do sloupce "deleted".
Ladislav Hagara | Komentářů: 2
včera 20:01 | Bezpečnostní upozornění
Chyba v jádře 4.0 způsobuje rozbití Ext4 pokud je provozován na SSD RAID 0 společně s volbou discard. Bližší info na Phoronixu a lkml.
lertimir | Komentářů: 7
včera 20:00 | Pozvánky
Czech JBoss User Group vás srdečně zve na setkání JBUG v Brně, které se koná ve středu 3. června 2015 v prostorách Fakulty informatiky Masarykovy univerzity v místnosti A318 (nová část budovy) od 18:00. Přednáší Lukáš Vlček.
Jan Bleha | Komentářů: 0
včera 10:09 | Bezpečnostní upozornění
Server bitcointalk.org bol kompromitovaný pomocou sociálneho inžinierstva. Pravdepodobný je únik emailových adries, hash-ov hesiel a ďalších údajov. [Twitter]
AraxoN | Komentářů: 1
22.5. 20:20 | IT novinky
Společnost Embedstudio spustila na Indiegogo kampaň na podporu svého jednodeskového počítače (SBC) Lemon Pi v ceně 35 dolarů. Které ovoce bude následovat po Raspberry, Banana, Orange a Lemon?
Ladislav Hagara | Komentářů: 48
22.5. 10:40 | Zajímavý projekt
Telefon Neo900, nástupce linuxového telefonu Nokia N900, lze nyní předobjednat. Podrobnosti v často kladených otázkách (FAQ). [Slashdot]
Ladislav Hagara | Komentářů: 26
22.5. 09:39 | Nová verze
Lennart Poettering oznámil vydání verze 220 správce systému a služeb systemd. Verze 220 vyšla po třech měsících vývoje od vydání verze 219 (zprávička) a opět přináší řadu nových vlastností a vylepšení. Knihovna gudev byla od systemd oddělena a stala se součástí projektu GNOME. UEFI boot manager gummiboot byl naopak do systemd začleněn (zprávička) a přejmenován na systemd-boot. Odstraněn byl systemd-shutdownd, v systemd-importd přibyla podpora gpg2, systemd-networkd umí nově tunely vti6, ...
Ladislav Hagara | Komentářů: 90
21.5. 21:21 | Bezpečnostní upozornění
Symantec v příspěvku na svém blogu věnovaném počítačové bezpečnosti upozorňuje na falešnou verzi populárního telnet a ssh klienta PuTTY, jež předává informace o úspěšném spojení (SSH URI) útočníkovi.
Ladislav Hagara | Komentářů: 26
Nešifrované HTTP
 (5%)
 (95%)
Celkem 2110 hlasů
 Komentářů: 54, poslední 22.5. 16:58
Rozcestník
Reklama
Autoškola testy online Levný benzín

Mám python ještě radši než dřív.

30.5.2008 17:58 | Přečteno: 1098× | poslední úprava: 30.5.2008 18:04

Dalsí kousek pythoního kódu, na který jsem pyšný.

Nejsem pyšný na sebe, nejde o nic složitého ani objevného. Jsem pyšný na python, protože jsem zase jednou zjistil že jsem neudělal chybu, když jsem se vybodnul na Javu.

O co jde ? Potřebuji předem neznámou datovou strukturu serializovat do ekvivalentního pythoního kódu. Není to žádná raketová věda, ale čekal jsem spoustu otravování s tím, aby byl výsledek syntakticky košer, aby to pobralo vnořené struktury, aby se to dalo snadno rozšiřovat o nové datové typy. Když jsem se konečně přinutil přestat "psát Céčko v pythonu" a začal "přemýšlet v pythonu", vyplynulo to samo, s jednoduchostí a samozřejmostí, která mi ještě ted bere dech.

# convert data to code
import types

data2code = {
    types.DictType: lambda x: "{" + ", ".join(["%s: %s" % (textualize(k), textualize(v)) for k,v in x.items()]) + "}",
    types.TupleType: lambda x: "(" + ("".join([ textualize(i)+", " for i in x ])) + ")",
    types.ListType: lambda x: "[" + (", ".join([ textualize(i) for i in x ])) + "]",
    types.StringType: lambda x: '"%s"' % x,
    types.UnicodeType: lambda x: '"%s"' % x,
    types.IntType: lambda x: str(x),
    types.BooleanType: lambda x: str(x),
    types.NoneType: lambda x: "None",
}

# shorthand for converting of given val
def textualize(val):
    return data2code[type(val)](val)
       

Hodnocení: 100 %

        špatnédobré        

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

Komentáře

Vložit další komentář

30.5.2008 18:51 spang
Rozbalit Rozbalit vše Re: Mám python ještě radši než dřív.
Ehhh, znáš funkci repr() ?
repr(object)

Return a string containing a printable representation of an object. This is the same value yielded by conversions (reverse quotes). It is sometimes useful to be able to access this operation as an ordinary function. For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to eval().

rADOn avatar 30.5.2008 19:08 rADOn | skóre: 43 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Mám python ještě radši než dřív.
Znám, bohužel háček je v tom For many types. Součástí jsou i nestandartní data, jmenovitě xmlrpc/fastrpc typy a ty mají s implementací __repr__() vážný problém. Z kódu který jsem postnul jsem je pro jednoduchost vynechal.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
Nikola Ciprich avatar 30.5.2008 19:45 Nikola Ciprich | skóre: 22 | blog: NiX_blog | Bohumín
Rozbalit Rozbalit vše Re: Mám python ještě radši než dřív.
ty lambdy jsou tam trosku zbytecne, co takhle:

types.BooleanType: str

;)
Did you ever touch the starlight ? Dream for a thousand years? Have you ever seen the beauty Of a newborn century?
30.5.2008 23:38 CEST
Rozbalit Rozbalit vše Re: Mám python ještě radši než dřív.
Chapu to dobre, ze tahle funkce dela to same jako v perlu Data::Dumper nebo v PHP serialize? BTW: mas u toho retezce osetreny, kdyz bude obsahovat uvozovky?
1.6.2008 17:21 vlasta neubauer
Rozbalit Rozbalit vše Re: Mám python ještě radši než dřív.
nevím co dělá Perlovský Data::Dumper, ale v PHP jde s píše o ekvivalent funkce var_export(). serializace je trošku něco jiného. tady jde o konverzi na validní kód, ne o konverzi na 'prostý' text.

Založit nové vláknoNahoru

ISSN 1214-1267   Powered by Hosting 90 Server hosting
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.