这些表达式的计算结果应该不同吗?

发布于 2024-12-06 09:12:19 字数 349 浏览 0 评论 0原文

在我发现代码中的错误之前,我有点困惑。我不得不更改

a.matched_images.count #True when variable is 0

a.matched_images.count > 0 #False when variable is 0

因为我很快想知道一个对象是否有任何图像,所以第一个代码将显示为照片有图像,因为当含义确实为 false 时,表达式的计算结果为 True (“没有图片”/ 0 图片)

我是否正确理解了这一点?如果这些表达式应计算为不同的值,您能否回答或评论。

I was somewhat confused until I found the bug in my code. I had to change

a.matched_images.count #True when variable is 0

to

a.matched_images.count > 0 #False when variable is 0

Since I quickly wanted to know whether an object had any images, the first code will appear like the photo has images since the expression evaluates to True when the meaning really is false ("no images" / 0 images)

Did I understand this correctly and can you please answer or comment if these expressions should evaluate to different values.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

家住魔仙堡 2024-12-13 09:12:19

count 的本质是什么?如果它是一个基本的 Python 数字,则 if countif count != 0 相同。另一方面,如果 count 是自定义类,那么它需要为 Python 2.x 实现 __nonzero____len__,或者 对于 Python 3.x,为 >__bool____len__。如果未定义这些方法,则该类的每个实例都被视为 True

What is the nature of count? If it's a basic Python number, then if count is the same as if count != 0. On the other hand, if count is a custom class then it needs to implement either __nonzero__ or __len__ for Python 2.x, or __bool__ or __len__ for Python 3.x. If those methods are not defined, then every instance of that class is considered True.

快乐很简单 2024-12-13 09:12:19

如果不知道 count 是什么,就很难回答,但是

以下值被视为错误:

  • 错误

  • 任何数字类型的零,例如 0、0L、0.0、0j。

  • 任何空序列,例如 ''、()、[]。

  • 任何空映射,例如 {}。

  • 用户定义类的实例,如果该类定义了
    __nonzero__()__len__() 方法,当该方法返回
    整数零或布尔值 False。 [1]

所有其他值都被视为 true — 因此许多类型的对象都是
永远正确。

Without knowing what count is, it's hard to answer, but this excerpt may be of use to you:.

The following values are considered false:

  • None

  • False

  • zero of any numeric type, for example, 0, 0L, 0.0, 0j.

  • any empty sequence, for example, '', (), [].

  • any empty mapping, for example, {}.

  • instances of user-defined classes, if the class defines a
    __nonzero__() or __len__() method, when that method returns the
    integer zero or bool value False. [1]

All other values are considered true — so objects of many types are
always true.

久隐师 2024-12-13 09:12:19
>>> bool(0)
False

所以..不,如果它是一个 int 那就没关系了。请进行一些跟踪,打印出 count 实际是什么。

>>> bool(0)
False

So.. no, if it were an int that wouldn't matter. Please do some tracing, print out what count actually is.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文