在Python语言中eva("input()")和val(input())之间的区别

Difference between eval(quot;input()quot;) and eval(input()) in Python(在Python语言中eva(quot;input()quot;)和val(input())之间的区别)
本文介绍了在Python语言中eva("input()")和val(input())之间的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试以下函数:

x = eval(input())

输入为123,x的类型也是int,工作正常:

In [22]: x=eval(input("enter:"))
enter:123
In [24]: print(type(x))
<class 'int'>

但在将输入作为ABCD提供时,它抛出错误:

In [26]: x=eval(input("enter:"))
enter:abcd
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-26-fb0be0584c85> in <module>()
----> 1 x=eval(input("enter:"))

<string> in <module>()

NameError: name 'abcd' is not defined

同样当我将代码更改为:

x=eval('input()')

工作正常:

In [27]: x=eval('input("enter:")')
enter:abcd

In [28]: print(x)
abcd

但当输入为123时,x的类型是str而不是int

In [30]: x=eval('input("enter:")')
enter:123

In [31]: print(type(x))
<class 'str'>

推荐答案

eval评估一段代码。input从用户输入中获取字符串。因此:

  • eval(input())计算用户输入的任何内容。如果用户输入123,结果将是一个数字;如果他们输入"foo",则结果将是一个字符串;如果他们输入?wrfs,则将引发错误。

  • eval("input()")计算字符串"input()",这会导致Python执行input函数。这将要求用户输入字符串(不要求其他任何内容),即123将是字符串"123"?wrfs将是字符串"?wrfs""foo"将是字符串'"foo"'(!)。

可能会有明显区别的第三个版本:eval(eval("input()"))eval(input())完全相同。

这篇关于在Python语言中eva(&quot;input()&quot;)和val(input())之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)