[python] vytvoření proměnných
Hynek Fabian
hynek.fabian na firma.seznam.cz
Úterý Prosinec 21 20:11:59 CET 2010
A je vam jasne ze exec() je pythoni obdoba nabite brokovnice?
y = ['1','2','3','4','5','open('/etc/passwd').read()']
Vsechny "promenne" v pythonu jsou jen odkazy v nejakem jmennem prostoru,
kam se da sahnou i mene nebezpecnym zpusobem:
for k, v in zip(x,y):
setattr(someobject, k, v)
'someobject' muze byt trida, instance, modul... cokoliv krome lokalniho
jmenneho prostoru funkce. Ten neni sam o sobe objekt takze je dostupny jako
slovnik volanim locals(), takze by stacilo
locals().update(dict(zip(x,y)))
Modifikace skrz locals() sice nejsou podle rtfm tak uplne koser,
ale funguje to a porad je to lepsi nez ten exec()
Ing. Vladislav Ludík (Tuesday 21 December 2010 18:49:33):
> Funguje to skvěle:
>
> x = ['a','b','c','d','e','f']
> y = ['1','2','3','4','5','6']
>
> for element in zip(x,y):
> exec ( '%s = %s' % element)
>
> print a, b, c, d, e, f
> 1 2 3 4 5 6
>
> print a + b + c + d + e + f
> 21
>
> V.L.
>
> Lansky, Milan napsal(a):
> > exec(p1 + '=' + str(h1))
> >
> > -----Original Message-----
> > From: python-bounces na py.cz [mailto:python-bounces na py.cz] On Behalf Of
> > "Ing. Vladislav Ludík" Sent: Tuesday, December 21, 2010 12:45 AM
> > To: Konference PyCZ
> > Subject: [python] vytvoření proměnných
> >
> > Zdravím všechny,
> >
> > poradí někdo účinnou a jednoduchou metodu vytvoření spojení názvů
> > proměnných s jejich hodnotami:
> >
> > x => {p1, p2, p3, ...pn}
> > y => {h1, h2, h3, ...hn}
> >
> > kde p jsou proměnné a h jsou jejich hodnoty.
> >
> > Výsledkem by měly být deklarované proměnné s jejich hodnotami:
> > p1 = h1
> > p2 = h2
> > p2 = h3
> > .
> > .
> > pn = hn
> >
> >
> > Díky, zdraví
> >
> > V.L.
> > _______________________________________________
> > Python mailing list
> > Python na py.cz
> > http://www.py.cz/mailman/listinfo/python
> >
> >
> > This e-mail and any attachment is for authorised use by the intended
> > recipient(s) only. It may contain proprietary material, confidential
> > information and/or be subject to legal privilege. It should not be
> > copied, disclosed to, retained or used by, any other party. If you are
> > not an intended recipient then please promptly delete this e-mail and
> > any attachment and all copies and inform the sender. Thank you.
> >
> >
> > _______________________________________________
> > Python mailing list
> > Python na py.cz
> > http://www.py.cz/mailman/listinfo/python
> >
> > __________ Informace od NOD32 5721 (20101221) __________
> >
> > Tato zprava byla proverena antivirovym systemem NOD32.
> > http://www.nod32.cz
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
Další informace o konferenci Python