Python中能否使用eval()函数获取多个不同数据?
Python中用eval()获取多个数据的方法
能不能用eval()获取多个数据?
没问题。eval()的核心是解析字符串形式的Python表达式,只要你传入的字符串能生成包含多个值的结构(比如元组、列表),就能一次性拿到多个数据。
举个简单例子:
# 输入格式比如:1, 2, 3 a, b, c = eval(input("输入三个数,用逗号分隔:")) print(a, b, c)
这里输入的字符串会被eval解析成元组,直接解包给三个变量。
能不能用eval()实现类似a, b, c = map(float, input().split())的功能?
当然可以,甚至写法更灵活。分两种场景:
场景1:逗号分隔输入
直接用eval解析,自动转成浮点数:
a, b, c = eval(input("输入三个浮点数,用逗号分隔:"))
比如输入3.14, 2.718, 1.414,eval会直接解析成包含三个浮点数的元组,解包给变量。
场景2:空格分隔输入
如果习惯用空格分隔,先把空格替换成逗号,再用eval包裹成元组:
input_str = input("输入三个浮点数,用空格分隔:").replace(" ", ",") a, b, c = eval(f"({input_str})")
这样输入3.14 2.718 1.414也能正确解析。
重要提醒
- eval()会执行任何合法的Python表达式,绝对不要用它处理不可信的输入(比如来自陌生用户的输入),否则可能被注入恶意代码。
- 如果输入格式错误(比如输入了非数值字符),会抛出语法或名称错误,实际使用时建议加上
try-except做异常处理。
内容的提问来源于stack exchange,提问作者Nguyễn Phúc Khang
相关产品推荐
相关产品推荐

