python - python无和等于评估
问题描述
如果我运行以下 Python 3.7 代码
a=None
b=None
a==b
>> True
b is not None
>> False
True is not None
>> True
a==b is not None
>> False
因为 a==b 是 True,这让我明白这段代码的计算结果为 A==B,其中 A=a 和 B=b 不是 None
但是,如果我运行以下代码
a = datetime(2020,1,1)
b = datetime(2020,1,1)
a==True
>> False
b is not None
>> True
a==b is not None
>> True
它与上述相矛盾。所以我对如何评估这一切感到有点困惑。
谢谢你的帮助!
解决方案
您在示例中看到了运算符链接,
a==b is not None
相当于:
a==b and b is not None
因此结果。
如果要比较a==b
,请使用原子表达式:
(a==b) is not None
见6.10。详细对比。简而言之,a op1 b op2 c ... y opN z
等价于a op1 b and b op2 c and ... y opN z
,除了每个表达式最多计算一次。
推荐阅读
- appium - 根据屏幕存在执行操作 (Android JAVA)
- rust - 无法编译 stb_truetype 0.2.4,因为“切片模式语法是实验性的”
- laravel - 在 Laravel 中创建模型时使用受保护的 $table 变量
- json - 使用 Moshi 将平面 JSON 解析为嵌套对象结构
- javascript - 在 ASP.NET MVC 中填充下拉列表的正确方法
- django - 如何在django rest框架中序列化多个关系模型
- php - Dreamweaver 未定义 PHP 函数
- java - 在 BaseX 数据库上运行命令
- c - GTK+/C:通过 g_signal_connect 传递数据会改变数据
- r - 如何使用 dpylr 和 lubridate 添加取决于最后一行的行?