如何正确理解not3的含义?避免跟不上潮流看这里!

tmyb

行,今天就来叨叨一下我捣鼓“not3”这档子事儿。

话说回来,这也不是什么高深玩意儿,就是最近看代码的时候,老遇到这个 not 关键字,有时候后面跟数字,有时候跟别的。看得我有点迷糊,特别是那个 `not` 后面跟个数字 `3` 的情况,脑子里就一直转悠,这到底是个啥意思?

咱这人,就是有点犟,搞不明白心里就不得劲。我就决定自己动手试试,不试明白我睡不着觉。

如何正确理解not3的含义?避免跟不上潮流看这里!

实践开始

我先把电脑打开,弄个最简单的环境,就那种能直接敲代码看结果的。我想,得从根儿上弄明白这个 not 是怎么回事。

第一步:试试 `not` 跟数字

我先敲 `not 3`,回车一看,出来个 `False`。 আচ্ছা,有点意思。我想,那是不是所有非零的数,用 `not` 一弄,都变成 `False` ?

  • 我又试 `not 1`,果然也是 `False`。
  • 如何正确理解not3的含义?避免跟不上潮流看这里!

  • 试试 `not -5` ?还是 `False`。
  • 那 `not 0` ? 这个得试试。一敲回车,出来 `True`!

吼!这下有点眉目。看起来,这个 not ,在碰到数字的时候,好像是把 `0` 当成“假”的,其他所有不是 `0` 的数(正数、负数都算)都当成“真”的。然后 `not` 的作用就是把这个“真”变成 `False`,把“假”变成 `True`。

第二步:再试试别的

光试数字还不行,我得看看它对别的东西咋样。

如何正确理解not3的含义?避免跟不上潮流看这里!

  • 试 `not True`,这个简单,肯定是 `False`。
  • 试 `not False`,那必须是 `True`。
  • 我还试空的字符串,比如 `not ''`,结果是 `True`。
  • 然后试个有内容的字符串,比如 `not 'hello'`,结果是 `False`。

如何正确理解not3的含义?避免跟不上潮流看这里!

这下更清楚。这个 not,基本上就是判断它后面的东西是不是“空”或者“假”。如果是“空”的(像0,空的字符串,`False` 本身),`not` 一下就得到 `True`;如果不是“空”的(像非零数字,有内容的字符串,`True` 本身),`not` 一下就得到 `False`。

搞明白

绕一圈,回到最开始那个 “not3”。它就是因为 `3` 不是 `0`,被当成“真”的,然后 `not` 再把它反过来,结果就是 `False`。

这东西原理挺简单的,就是布尔逻辑那套。但有时候代码看多,冷不丁冒出来一个 `not` 后面跟个数字,尤其是像 `3` 这种具体的数,就容易让人卡壳一下,想“这哥们想干”。

今天自己这么一顿敲键盘试下来,感觉心里踏实多。以后再看到类似 `if not count:` 这样的代码,就能立马反应过来,这是想在 `count` 等于 `0` 的时候执行某些操作。而不是傻乎乎地去想 `not` 和那个数字本身有啥数学运算关系。

实践出真知,这话真不假。今天这个小坑算是给自己填上。舒服。

如何正确理解not3的含义?避免跟不上潮流看这里!