- 今天用了个函数定义,用输入input的时候
a,b,c=int(input())报错
ValueError: invalid literal for int() with base 10: '2,3,1'- 原来,用
int(input())强制转换的时候是整体转换,当输入2,3,1时,引号加到了'2,3,1',所以,要用eval来进行转换,a,b,c=eval(input())在进行转换的过程中去掉引号,他认定三个数为三个整数,所以可以进行下去,如图示。
- 当
eval输入为qwe的时候,实际上接收的是'qwe',去掉引号是qwe,它并不能认定是什么,故要输入'"qwe"',如果要区分,则要如图所示输入a,b,c = eval('"q","w","e"')
在这里我刚开始很难理解,所以我百度了很多,用两个例子做对比,定义a,b,c的值
a=1,b=2,c=3,定义s='[a,b,c]',1.输出`s`为`'[a,b,c]'` 2.输出`eval(s)`为`[10, 20, 30]`
如图,懂了。
总结,
eval函数就是去掉引号的一个函数,然后定义的一个函数,如果引号里面是数字,那么它会定义int类型,例:'1'。如果有两个引号,脱掉一层引号里面是字符串str类型,例:'"a"'。如果有一个引号,脱去后他会看系统有没有对应的内容,比如:a=2,eval('a')那么他就会输出2。

555