Python 有没有办法用ast.literal\u eval执行range()操作?

Python 有没有办法用ast.literal\u eval执行range()操作?,python,Python,或者用另一种方式问我,我想有一个literal,它将literal_求值为range函数的等价物(而不将整个数组作为range发送) 以下 import ast ast.literal_eval("range(0,3)") ast.literal_eval("[0, 1, 2, 3][0:3]") 结果: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/u

或者用另一种方式问我,我想有一个literal,它将literal_求值为range函数的等价物(而不将整个数组作为range发送)

以下

import ast
ast.literal_eval("range(0,3)")
ast.literal_eval("[0, 1, 2, 3][0:3]")
结果:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "/usr/lib64/python2.7/ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string

ast.literal\u eval(节点或字符串)

安全地计算表达式节点或包含Python表达式的字符串提供的字符串或节点只能由以下Python文本结构组成:字符串、数字、元组、列表、dicts、boolean和None。

范围(明确指定的列表除外)不是其中的任何一个,因此不是

>>> ast.literal_eval(str(range(0,3)))
[0, 1, 2]