我注意到,Python的EVAL()函数缩短一些列表,使用 “...”:如何在评估列表时防止Python的eval()使用“...”?
In [10]: eval ('array([1./5.0e-12] + [0.]*1023)')
Out[10]:
array([ 2.00000000e+11, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00])
我怎么能阻止它这样做?
(后续的代码barfing的 “...”。):
File "<string>", line 1
initializer.channel_response = array([ 2.00000000e+11, 0.00000000e+00, 0.00000000e+00, ...,
^
SyntaxError: invalid syntax
这里是我的人创建的配置文件,一个典型的 “线”:
('Pretap = 0', \
({'root_name' : 'example_tx', \
'tx_tap_np1' : 0, \
'tx_tap_nm1' : 0, \
'tx_tap_nm2' : 0, \
}, \
{'channel_response' : array([1./5.0e-12] + [0.]*1023), \
'sample_interval' : 5.0e-12, \
} \
) \
)
这与'eval'无关。如果您在没有'eval'的情况下评估相同的表达式,您会得到相同的结果。只有在将numpy数组显示为字符串时,才会出现'...'。 – interjay
看起来你正在一个字符串上运行'eval',然后复制结果并粘贴到不同的代码行中。为什么这样做?为什么不只是'initializer.channel_response = array([1。/ 5.0e-12] + [0。] * 1023)'? – Kevin
因为我正在从文件中读取几个不同的配置。 – dbanas