Python 中利用 input 安全输入列表的方法:ast.literal_eval 详解
本文介绍在 Python 中如何通过 input 函数接收用户输入的列表数据。重点讲解使用 ast.literal_eval() 将逗号分隔的字符串安全转换为列表的方法,并对比 eval() 函数的潜在风险,强调 ast.literal_eval 在判断数据类型合法性方面的安全性优势,推荐作为标准实践。
Python 中利用 input 安全输入列表的方法
Python 中利用 input 安全输入列表的方法
当需要通过 input 接收数据并构建列表时,可以在输入字符串中使用逗号分隔各个元素,随后调用 ast.literal_eval() 函数将其解析并转换为标准的列表对象。
具体实现代码如下:
代码实现与运行结果
import ast
lists = ast.literal_eval(input("请输入列表,使用逗号隔开: "))
print(lists)
程序运行后的输出结果如下:

ast.literal_eval 与 eval 的安全性对比
ast.literal_eval() 的核心功能是将输入的字符串数据还原为其对应的原始数据类型,或者转换为能够合法表示的数据类型。
虽然 eval() 函数也能实现类似的数据转换效果,但两者在安全性机制上存在显著差异:
eval() 函数在执行计算前不会预先验证输入内容是否为合法的 Python 数据类型。它直接在调用时尝试执行表达式,如果输入内容不属于合法的 Python 类型,程序将抛出异常错误。
相比之下,ast.literal_eval 会在计算前严格检查输入内容,确认其转换后是否为合法的 Python 类型。只有当验证通过时才会执行运算,否则直接拒绝处理,从而避免非法代码执行。
基于上述安全机制,强烈推荐使用 ast.literal_eval 来处理用户输入的列表数据。
以上即为 Python 中使用 input 安全输入列表的完整方法说明。如需进一步补充或交流,欢迎联系本站编辑团队。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









