2013-06-21 70 views
8

變量賦值我用eval()到一個列表分配給VAR:的eval()在運行時不

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

但是當我運行它,我得到了一個SyntaxError。它出什麼問題了?如果我不能在eval()中進行分配,我該如何在運行時分配一個變量。

+1

在一個完全無關的筆記,你可能最好使用兩種'當地人()','全局()',或爲真大膽,一本字典。 –

+0

@Snakes and Coffee:現在我已經學會了這兩個功能。這是我的情況:我想在一個類中創建一個新的成員變量。我如何實現它? –

+3

你可以做'setattr(,'mylist',[1,2,3])' –

回答

13

使用exec的發言:

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

只對表達式eval作品,如2*24+5

evalexec都還好,如果字符串是從已知來源的到來,但不要如果字符串來自未知來源(用戶輸入),則使用它們。

閱讀:Be careful with exec and eval in Python

+1

不是這樣'python 3中的exec('mylist = [1,2,3]')'3 –

+0

插入強制性的「注意'exec',這可能很危險」 – SethMMorton

相關問題