为什么,对于x=0,';不是x';真实且';x';在Python中是否为False?
我对为什么,对于x=0,';不是x';真实且';x';在Python中是否为False?,python,integer,boolean-operations,Python,Integer,Boolean Operations,我对x的True/False和不是x感到困惑 对于Python中的x=0,其中x是int 为什么if not x允许执行以下语句,为什么if x不允许执行以下语句 请给出解释。如果语句的条件计算为“false”值,如0、空字符串、false或空列表/元组,则语句不执行其内容。如果语句的条件计算为“false”值,如0、空字符串、false,则语句不执行其内容,或者一个空的列表/元组。假设你的意思是 x = True y = 0 if x: print('x is true') if not
x
的True
/False
和不是x
感到困惑
对于Python中的x=0
,其中x
是int
为什么if not x
允许执行以下语句,为什么if x
不允许执行以下语句
请给出解释。如果语句的条件计算为“false”值,如0、空字符串、
false
或空列表/元组,则语句不执行其内容。如果语句的条件计算为“false”值,如0、空字符串、false
,则语句不执行其内容,或者一个空的列表/元组。假设你的意思是
x = True
y = 0
if x:
print('x is true')
if not y:
print('your not sure why this prints')
这是因为在Python中,
0
的计算结果为False
x = True
y = 0
if x:
print('x is true')
if not y:
print('your not sure why this prints')
这是因为在Python中,0
的计算结果为False。来自Python文档:
“默认情况下,对象被视为true,除非其类定义了返回False的bool()方法或使用对象调用时返回零的len()方法。1以下是大多数被视为False的内置对象:
- 定义为false的常量:
和None
false
- 任何数字类型的零:
,0
,0.0
,0j
,十进制(0)
分数(0,1)
- 空序列和集合:
,'
,()
,[]
,{}
,集()
范围(0)
>>> type(0)
<class 'int'>
>类型(0)
但是有一个错误的逻辑值,如python文档中的“”、()、[…]等等:
默认情况下,对象被视为true,除非其类定义了返回False的bool()方法,或与对象一起调用时返回零的len()方法。1以下是大多数被认为是错误的内置对象:
- 定义为false的常量:
和None
false
- 任何数字类型的零:
,0
,0.0
,0j
,十进制(0)
分数(0,1)
- 空序列和集合:
,'
,()
,[]
,{}
,集()
范围(0)
>>> type(0)
<class 'int'>
>类型(0)
但是有一个错误的逻辑值,如“”,(),[。。。以此类推
0
是一个,假
,而任何非零的数字计算为真
x = 0
if not x
就像说
x = 0
if x is False:
条件满足的值。
0
是一个,False
,而任何非零的数字计算为True
x = 0
if not x
就像说
x = 0
if x is False:
因为在python中
0
被认为是错误的,所以当您编写(如果x)
时,它将仅在x=0
(因此它将被评估为true)。因为在python中0
被视为false,所以当您编写(如果x)
时,它将仅在x=0
(因此它将被评估为true)。听起来您需要进行一些布尔检查。
python世界中的一切(以及大多数编程)归结起来要么是真的,要么是假的。
以整数为例。
在python(可能还有大多数语言)中,值0变为False,其他所有值都为True。
通过使用bool
函数,可以获得python中几乎任何内容的真/假值。尝试bool(0)
或bool(2)
现在,if
所做的是获取一个表达式(基本上只是一个布尔值),如果它为真,则执行代码块,如果为假,则跳过它
x=0
如果x:
print(“这将永远不会被打印,因为x是”,x,“它的布尔值是”,bool(x))
现在,不
做的是取一个布尔值,并使其相反<代码>不正确为错误
<代码>非假为真
。它是这样做的,但是有很多次not
存在,因此not-True
将是True
x=0
如果不是x:
打印(“这将打印,因为x是”,0,“x的布尔值是”,bool(x),“而布尔值x的非值是”,notbool(x))
听起来你需要一点布尔审查。
python世界中的一切(以及大多数编程)归结起来要么是真的,要么是假的。
以整数为例。
在python(可能还有大多数语言)中,值0变为False,其他所有值都为True。
通过使用bool
函数,可以获得python中几乎任何内容的真/假值。尝试bool(0)
或bool(2)
现在,if
所做的是获取一个表达式(基本上只是一个布尔值),如果它为真,则执行代码块,如果为假,则跳过它
x=0
如果x:
print(“这将永远不会被打印,因为x是”,x,“它的布尔值是”,bool(x))
现在,不
做的是取一个布尔值,并使其相反<代码>不正确为错误
<代码>非假为真
。它是这样做的,但是有很多次not
存在,因此not-True
将是True
x=0
如果不是x:
打印(“这将打印,因为x是”,0,“x的布尔值是”,bool(x),“而布尔值x的非值是”,notbool(x))
归根结底:因为语言定义是这样说的
Python选择将几乎所有表达式隐式转换为布尔值(真/假)。转换是在语言中定义的
对于整数类型,转换为0为False,其他