我正在探索python的逻辑及其工作方式。 我想知道这段代码是如何工作的以及它实际上意味着什么使它能够提供这些结果..
代码:
print(str and int)
print(int and str)
print(str or int)
print(int or str)
结果:
<class 'int'>
<class 'str'>
<class 'str'>
<class 'int'>
答案 0 :(得分:2)
来自python doc
- x or y --> if x is false, then y, else x
- x and y --> if x is false, then x, else y
- not x --> if x is false, then True, else False
这意味着它返回的项目本身不仅仅是True或False
Here它提到: -
请注意,
and
和or
都不会限制它们返回的值和类型 到False
和True
,而是返回最后一个评估的参数。
这就是str or int
返回str
和str and int
返回int
答案 1 :(得分:1)
Python使用以下方法:
对于“and”运算符:
对于“或”运营商:
在您的情况下,str
和int
是类,因此评估为true,这完全解释了您观察到的内容。
答案 2 :(得分:0)
and
为您提供检查的最后一个条件的最后一个对象,以检查它是true
还是false
,而or
停在第一个过去了。因为str
和int
都是true
,因为它们是定义的对象,所以你得到它们
要证明你可以这样做:
print(str and int and bool) #<class bool>
你正在证明or
。
答案 3 :(得分:0)
i)Python有&#34; Truthy&#34;和Falsey值,意味着在逻辑运算的上下文中对象被评估为True或False。例如,以下代码打印出&#34; Yay!&#34;
if str:
print("Yay!")
如果您将str
替换为int
ii)and
一旦遇到虚假断言就终止; or
遇到一个真正的断言。因此and
返回了最后一个表达式,or
返回了您案例中的第一个表达式,因为两个表达式都独立地计算为True。