python - 在 Python 中在函数参数(isinstance)中使用运算符时出错
问题描述
我似乎无法理解这个函数的输出:
def is_integer(num1, num2):
if isinstance(num1 and num2, int):
return 'Yes'
else:
return 'No'
print(is_integer(1.4, 2))
这将输出“是”,但它不应该因为 1.4 和 2 不是两个整数。有什么帮助吗?
解决方案
and
运算符在 Python 中的工作方式是:
表达式
x and y
首先计算x
; 如果x
为假,则返回其值;否则,y
评估并返回结果值。
在 Python 中,None
, False
, 数字零和空集合是假的;几乎其他一切都是真的。1
所以,1.4 and 2
意味着2
,因为1.4
不为零。
所以,isinstance(1.4 and 2, int)
意味着isinstance(2, int)
。
并且2
是一个int
.
您可能想要的是:
if isinstance(num1, int) and isinstance(num2, int):
… 或者:
if all(isinstance(num, int) for num in (num1, num2)):
1. 为避免具体True
和False
值混淆以及真假值更抽象的概念,大多数 Python 开发人员将None
// False
zero/empty 称为“falsey”而不是“false”,其他一切都称为“truthy”而不是“真的”。但是文档避免了这种可爱,我在此处引用文档。
推荐阅读
- azure - COMOS DB 中的自动索引
- r - 闪亮的 UI 不读取仪表板格式
- python - 如何从文件中选择一个随机单词供用户解读?
- javascript - 用于 MacOs Catalina 的 Electron OpenGL
- android - 无法通过按钮单击打开导航抽屉(仅通过手势)
- python - 如何在 for 循环中获取熊猫系列差异?
- python - 如何使用请求处理程序创建 JupyterHub 扩展,以在 url 参数中创建带有笔记本内容的笔记本?
- javascript - axios get请求解决后如何修改对象
- php - 使用ajax增加/减少woocommerce的数量?
- algorithm - 这个红黑树插入“修复”算法不完整吗?