2013-06-21 5 views
8

Ich benutze eval() eine Liste zu einem var zuweisen:eval() vergibt keine Variable zur Laufzeit

eval('mylist = [1,2,3]') 

aber wenn ich es laufen, bekam ich einen Syntax. Was stimmt damit nicht? Wenn ich keine Zuweisung in der eval() tun kann, wie ich eine Variable in der Laufzeit zuweisen.

+1

Auf einer völlig unabhängig Note, sind Sie wahrscheinlich besser dran entweder 'Einheimischen mit()', 'Globals()', oder für die wirklich gewagt, ein Wörterbuch. –

+0

@Snakes und Kaffee: Jetzt habe ich diese beiden Funktionen gelernt. Hier ist meine Situation: Ich möchte eine neue Member-Var in einer Klasse erstellen. Wie implementiere ich es? –

+3

können Sie 'Setattr (, 'Meine Liste', [1,2,3])' –

Antwort

13

Verwenden exec für Aussagen:

>>> exec 'lis = [1,2,3]' 
>>> lis 
[1, 2, 3] 

eval funktioniert nur auf Ausdrücke, wie 2*2, 4+5 etc

eval und exec sind in Ordnung, wenn die Zeichenfolge aus einer bekannten Quelle kommen, aber nicht Verwenden Sie sie, wenn die Zeichenfolge von einer unbekannten Quelle stammt (Benutzereingabe).

lesen: Be careful with exec and eval in Python

+1

Nicht, dass dies ist 'exec ('mylist = [1, 2, 3]')' in python 3 –

+0

Insert obligatorisch "sei vorsichtig mit' exec', es kann gefährlich sein "hier – SethMMorton