簡體   English   中英

eval SyntaxError:python 中的語法無效

[英]eval SyntaxError: invalid syntax in python

我想分配:

x0='123'    
x1='123'    
x2='123'    
x3='123'    
x4='123'    
x5='123'    
x6='123'    
x7='123'    
x8='123'    
x9='123'    

我寫代碼是為了表示當輸入x1x8時我可以獲得字符串123的輸出。

for i in range(0,10):
    eval("x"+str(i)+"='123'")

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<string>", line 1
  x0='123'
  ^
SyntaxError: invalid syntax

我怎么能這樣做?

對於語句的動態執行,請使用exec函數:

>>> exec('y = 3')
>>> y
3

eval用法: eval(expression)

expression參數被解析和評估為 Python 表達式。

例如:

>>> s = 3
>>> eval('s == 3')
True
>>> eval('s + 1')
4
>>> eval('s')
3
>>> eval('str(s) + "test"')
'3test'

eval()只允許表達式 賦值不是表達式而是語句; 你必須改用exec

即使這樣,您也可以使用globals()字典將名稱添加到全局命名空間,並且您不需要使用任何任意表達式執行。

真的不想這樣做,您需要將數據保留在變量名稱之外,而是使用列表或字典:

x = ['123'] * 10

會給你一個列表,你可以用x[0]x[1]等來尋址,而不必執行任意表達式。

你可以你這個表情。

eval('"x"+str(i)+"="+"123"')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM