python - 在比较两个浮点值时为相同的代码获取不同的输出
问题描述
我在 python 中尝试过相同的代码,曾经作为.py
文件运行并在 IDLE 中输入过一次,但它为相同的代码提供了不同的输出:
a = 3.4
b = 3.4
a is b
我附上了尝试两种方法时截取的屏幕截图:
解决方案
左窗口返回 false 而右窗口返回 true 的原因是因为您键入的每个命令都是一个块,如手册中所述:
Python 程序是由代码块构成的。块是作为一个单元执行的一段 Python 程序文本。以下是块:模块、函数体和类定义。每个交互输入的命令都是一个块。
因此,当您使用控制台时,您键入的每个单独的命令都被视为一个块。每个块都有可重复使用的常量。在你的情况下 3.4 是一个常数。但是当您键入第二个命令时,它被认为是一个新块,因此它不会找到可以重用的常量。在使用 .py 文件的第二种情况下,常量被保存并重用,因为文件被视为单个代码块。
检查这一点的一种方法是在同一行声明两个变量,如下所示:
>>> a = 3.4; b = 3.4;
>>> print(a is b)
这将输出 True,因为您在同一命令中声明了两个变量,因此阻塞。
但是,如果您只想比较两个变量,则应使用==
. 请记住,您正在进行浮点比较,请查看此 stackoverflow,了解如何最好地做到这一点:Python 中的浮点比较
推荐阅读
- forms - MailApp.sendEmail 谷歌应用表的语法和正确的功能位置?
- audio - 使用 GStreamer 从 Pepper 机器人录制音频
- flutter - 有没有办法在颤动中选择默认键盘语言?
- python - ModuleNotFoundError:没有名为“字母”的模块
- c# - Blazor 的 Web api 基本 URL 的全局变量
- java - java中枚举值的条件
- vue.js -
占用比必要更多的空间(vuetify) - python - 将 pandas DataFrame 与 PyQt5 QTableView 同步
- python - Pyramid 中同一路线具有不同上下文的多个视图
- node.js - 不解的猫鼬