当我在第一个代码中将 True 更改为 False 时,我的输出保持 same.Why 是吗?

When i change True to False in the first code my output stays same.Why is that?

我的代码:

liste = ["345","sadas","324a","14","zxc"]

for i in liste:
    try:
        int(i) == True  #(make it false for example)
        print(i)
    except:
        pass



for i in liste:
    try:
         i = int(i)
        print(i)
    except:
        pass

输出:

345

14

这里你可以看到有两个不同的代码,问题是只写数字而不是字母。(通过使用 try-except)。但我的问题是,当我在第一个代码中将 True 更改为 False 时,我的输出保持 same.Why 是吗?

这个:

    int(i) == True  #(make it false for example)

首先尝试做一个iint,如果操作成功,则与True比较,然后丢弃测试结果。 IOW,整个比较最终成为空操作((从功能上讲 - 代码仍在执行),并且也可以仅替换为

`int(i)`

当然,由于比较的结果被丢弃,您可以只针对与 int(另一个 int、float、bool 等)可比较的任何值进行测试,这绝对没有区别。

作为旁注:这个:

try:
   something()
except:
    pass

是纯粹的邪恶——它捕获所有东西(包括 SystemExit)并忽略它。我知道这只是一个快速测试代码片段,但请帮个忙,永远不会在实际代码中这样做 - 始终指定您期望并在此时可以处理的确切异常在代码中,如果您想忽略它们,至少 将它们记录在某处,这样您就知道真正在您的代码中发生了什么。

when i change True to False in the first code my output stays same

因为与

相比,您没有对该结果执行任何操作
if int(i) == True:
    print(i)

或者干脆

if int(i):
    print(i)

但是,更合适的是

if i.isdigit():
    print(i)