-
python true和false是什么_Python解惑之True和False详解
2020-12-02 13:38:30前言众所周知在Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分别用True和False表示。在if 条件判断和while 语句中经常用到,不过在Python2.x 中,True 和False 却有着奇怪的用法,就是真假...前言
众所周知在Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分别用True和False表示。在if 条件判断和while 语句中经常用到,不过在Python2.x 中,True 和False 却有着奇怪的用法,就是真假可以相互被替换
先看下面代码:
>>> True
True
>>> False
False
>>> if True:
... print True
...
True
>>> if not False:
... print False
...
False
这段代码逻辑理解起来没任何问题,if 判断中只要表达式的值返回 True,就执行if 代码块中的语句。再来看下一段代码:
>>> True, False = False, True
>>> True
False
>>> False
True
>>> if not True:
... print False
...
True
>>> if False:
... print True
...
False
>>>
我把True 和False 互换了一下,就是传说中的颠倒是非黑白。真变成了假,假变成了真。于是在条件判断中,表达式的值返回False才执行代码块中的语句。究竟是什么原因呢?
解惑
在Python2.7 中,True和False是两个内建(built-in)变量,内建变量和普通自定义的变量如a, b, c一样可以被重新赋值,因此我们可以把这两个变量进行任意的赋值,比如:
True = 2
False = "abc"
甚至是True和False进行互换
tmp = True
True = False
False = tmp
互换后变量True指向了假对象,False指向了真对象:
因此,在Python 中我们不要随意给True 和False 赋新的值,否则程序代码逻辑都会乱套了。这也算是Python2.x 中一个坑,不过在Python3.x 中,终于把这个两变量变成了关键字,也就是说,程序员再也没法给这两变量赋新的值了,从此True永远指向真对象,False指向假对象,永不分离。用keyword模块检测True 和False 是否为关键字。
>>> import keyword
>>> keyword.iskeyword('True')
False
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
-
python什么等价于true_python 中的True和1及False和0是可以等价比较及是否是bool类型...
2020-12-30 12:11:36python 中的True和1及False和0是可以等价比较及是否是bool类型1、True和1及False和0是可以等价比较[root@10.144.5.223 root]# cat test_true_false.pyok=0if ok:print okok=1if ok:print okok=Trueif ok:print okok=...python 中的True和1及False和0是可以等价比较及是否是bool类型
1、True和1及False和0是可以等价比较
[root@10.144.5.223 root]# cat test_true_false.py
ok=0
if ok:
print ok
ok=1
if ok:
print ok
ok=True
if ok:
print ok
ok=False
if ok:
print ok
print '*'*20
ok=0
if ok == False:
print ok
ok=1
if ok == True:
print ok
ok=False
if ok ==0:
print ok
ok=True
if ok == 1:
print ok
[root@10.144.5.223 root]#
[root@10.144.5.223 root]# python test_true_false.py
1
True
********************
0
1
False
True
[root@10.144.5.223 root]#
2、判断 1、0和True、False 是否是bool类型
>>> a=0
>>> type(a)
>>>
>>> type(a) is bool
False
>>>
>>> a=1
>>>
>>> type(a)
>>>
>>> type(a) is bool
False
>>>
>>>
>>> type(1)
>>> type(1) is bool
False
>>>
>>> a=True
>>> type(a)
>>>
>>> type(a) is bool
True
>>>
>>> a=False
>>>
>>> type(a)
>>> type(a) is bool
True
>>>
-
C#/.NET 中启动进程时所使用的 UseShellExecute 设置为 true 和 false 分别代表什么意思?
2019-05-19 16:58:30本文介绍 UseShellExecute 属性的作用,设为 true 和 false 时,分别有哪些进程启动行为上的差异。 本文内容本质差异效果差异如何选择 本质差异 Process.Start 本质上是启动一个新的子进程,不过这个属性的不同,...在 .NET 中创建进程时,可以传入
ProcessStartInfo
类的一个新实例。在此类型中,有一个UseShellExecute
属性。本文介绍
UseShellExecute
属性的作用,设为true
和false
时,分别有哪些进程启动行为上的差异。
本质差异
Process.Start
本质上是启动一个新的子进程,不过这个属性的不同,使得启动进程的时候会调用不同的 Windows 的函数。UseShellExecute = true
- 调用的是 ShellExecute
UseShellExecute = false
- 调用的是 CreateProcess
当然,如果你知道这两个函数的区别,那你自然也就了解此属性设置为
true
和false
的区别了。效果差异
ShellExecute
的用途是打开程序或者文件或者其他任何能够打开的东西(如网址)。也就是说,你可以在
Process.Start
的时候传入这些:- 一个可执行程序(exe)
- 一个网址
- 一个 html / mp4 / jpg / docx / enbx 等各种文件
- 在
PATH
环境变量中的各种程序
不过,此方法有一些值得注意的地方:
- 不支持重定向输入和输出
- 最终启动了哪个进程可能是不确定的,你可能需要注意潜在的安全风险
而
CreateProcess
则会精确查找路径来执行,不支持各种非可执行程序的打开。但是:- 支持重定向输入和输出
如何选择
UseShellExecute
的默认值是true
。如果有以下需求,那么建议设置此值为
false
:- 需要明确执行一个已知的程序
- 需要重定向输入和输出
如果你有以下需求,那么建议设置此值为
true
或者保持默认:- 需要打开文档、媒体、网页文件等
- 需要打开 Url
- 需要打开脚本执行
- 需要打开计算机上环境变量中路径中的程序
参考资料
我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。
如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
-
java中怎么定义true或false_为什么Java中的布尔值只接受true或false? 为什么也不要1或0?...
2021-03-08 03:14:37您忘记了FILE_NOT_FOUND因为它是强类型的在Java中,只能使用" true"和" false"来确定布尔条件。 您不能像在C和C ++中那样将其他原始类型用作默认的" true"或" false"。因为它是用这种方式定义的。 纳夫说。因为它是f...有什么理由为什么Java布尔值仅采用true或false为什么不采用1或0?
这不是一个复杂的问题,但是我也没有理由反对。
您忘记了FILE_NOT_FOUND
因为它是强类型的
在Java中,只能使用" true"和" false"来确定布尔条件。 您不能像在C和C ++中那样将其他原始类型用作默认的" true"或" false"。
因为它是用这种方式定义的。 纳夫说。
因为它是f * king布尔值!)))))))数字会搞砸概念并鼓励混淆代码。
为了克服这个问题,我使用了boolean bValue = Integer.valueOf(strValue) > 0;
因为0或1是数字,而不是布尔值。
Java与C和C ++等语言不同,Java将boolean视为完全独立的数据类型,该数据类型具有2个不同的值:true和false。值1和0为int类型,并且不能隐式转换为boolean。
在JVM级别上,布尔值,字节,短型,字符和整数都被视为整数,并且布尔值确实表示为0和1。因此,"不可隐式转换"仅在Java语言级别。
另外,Java公开尝试从过去学习,以便消除所有类别的错误。例如范围从小功能(无隐式布尔表达式)到大功能(垃圾收集)
从克里斯的观点出发,写char x =(char)88945是合法的;或char y =(char)-489;。
C最初没有bool类型,因此您必须使用0或1。
您没有真正回答问题。他们问为什么。
因为布尔值具有两个值:true或false。请注意,这些不是字符串,而是实际的布尔文字。
1和0是整数,没有理由通过将它们设置为" alternative true"和" alternative false"来混淆事物(对于使用Unix退出代码的情况则相反吗?)。在Java中使用强类型时,应该只应该有两个原始布尔值。
编辑:请注意,您可以根据需要轻松编写转换函数:
public static boolean intToBool(int input)
{
if (input < 0 || input > 1)
{
throw new IllegalArgumentException("input must be 0 or 1");
}
// Note we designate 1 as true and 0 as false though some may disagree
return input == 1;
}
虽然我不建议这样做。请注意,您如何不能保证int变量确实为0或1;并且没有100%的明显语义代表什么是真的。另一方面,boolean变量始终是true或false,很明显,哪个变量是true。 :-)
因此,不要使用转换函数,而要对表示真假概念的所有内容都使用boolean变量。如果您必须使用某种原始文本字符串(例如,用于存储在平面文件中),则" true"和" false"的含义更加清楚,可以通过库方法Boolean.valueOf立即转换为布尔值。
+1:同样的原因" x"不是数字,而123不是日期。
对此进行具体说明会使您远离VB中的TRUE为-1,而在其他语言中则为NON ZERO。保持布尔字段为true或false会使java不在此参数范围内。
因为创建Java的人希望boolean明确表示true或false,而不是1或0。
语言之间尚无关于1和0如何转换为布尔值的共识。 C使用任何非零值表示true,使用0表示false,但是某些UNIX shell则相反。使用int会削弱类型检查,因为编译器无法防止传入的int值不应该在布尔上下文中使用的情况。
最后一段实际上是在讨论布尔值如何转换为int,而不是相反。是的,在C int foo = (a!=b);中将为0或1。但是在C中,任何非0值在布尔上下文中均为" true"。 if(foo)不检查foo==1,而是检查foo!=0。因此,如果您编写if(foo),则编译器肯定会处理它。仅当您执行_Bool equal = a & b之类的操作时,您才会遇到麻烦,因为4 & 2 == 0即使它们都为真。我认为这就是您要提出的重点。
其他答案未指出的一件事是,不将整数视为真值的一个优点是,它避免了这种C / C ++错误综合症:
int i = 0;
if (i = 1) {
print("the sky is falling!
");
}
在C / C ++中,错误地使用=而不是==会导致条件意外地将其评估为" true"并更新i作为偶然的副作用。
在Java中,这是编译错误,因为分配i = 1的值具有类型int,并且此时需要boolean。在Java中遇到麻烦的唯一情况是,如果您编写这样的me脚代码:
boolean ok = false;
if (ok = true) { // bug and lame style
print("the sky is falling!
");
}
...任何具有"良好品味"的人都会写成...
boolean ok = false;
if (ok) {
print("the sky is falling!
");
}
相关说明:由于JVM对布尔类型的支持有限,因此Java编译器使用int表示布尔值。请参见第3.3.4节布尔类型。
在JVM中,整数零表示false,任何非零整数表示true
(来源:Bill Venners撰写的Inside Java Virtual Machine)
从技术上讲这是三个方面的错误。 1)Java编译器不"代表"布尔值。它生成字节码。 2)字节码处理的是对象字段,抽象堆栈插槽和数组中的插槽。在某些情况下,保存boolean值的插槽映射为32位字(在典型的JVM实现中),但这并不意味着JVM将其视为ints。 3)在boolean[]中,用于容纳一个元素的插槽为8位,而不是32位。
我也要警惕依靠教科书作为此书的来源。最终的来源是JVM规范所说的,而不是某些作者为了使目标读者可以理解而提出的"旋转"。 (我还没有读过这本书,所以不要把它当作对它的批评。它只是一个警告……)
@StephenC"将对布尔值进行操作的Java编程语言表达式编译为使用Java虚拟机int数据类型的值" docs.oracle.com/javase/specs/jvms/se8/html/
同一部分还说:" Java虚拟机使用1表示true和0表示false对布尔数组组件进行编码。在Java编程语言布尔值由编译器映射为Java Virtual Machine类型int的值的情况下,编译器必须使用相同的编码。" -第一句话与Bill Venners的报价直接矛盾。第二句话有一个有趣的细微差别。
细微之处在于,这并不是说Java编译器必须使用JVM int类型来表示Java boolean类型。此外@mdewit,您引用的文本1)实际上仅适用于表达式,而2)只是描述性的,而不是描述性的。 (并没有说Java编译器必须将其编译为JVM int类型。)
我同意Bill Venners的报价绝对不正确。因此,由于该文档仅声明将表达式编译为使用int数据类型的值(我想选择int是因为它是使用效率最高的原语),我想知道还有什么其他方法比映射更合理使用?布尔值作为一个int。对于布尔数组,将它们映射为字节是有意义的,因为实际上将使用较少的空间,但是这种担心不适用于单个值。无论如何,谢谢您的解释。
对此进行具体说明会使您远离VB中的TRUE为-1,而在其他语言中则为NON ZERO。保持布尔字段为true或false会使java不在此参数范围内。
即使在C ++中有一个布尔(布尔值的缩写)数据类型。但是在C ++中,任何非零值都是包含负数的真值。 0(零)被视为false。在JAVA中,有一个单独的数据类型boolean,表示true和false。
在c和C ++中,没有称为BOOLEAN的数据类型
这就是为什么它使用1和0作为真实的假值。
并且在JAVA 1和0中被视为INTEGER类型,因此在Java中会产生错误。 Java具有自己的布尔值true和false,以及布尔数据类型。
????快乐的编程.. ??
C ++具有bool类型,并且true和false是关键字。 C11有_Bool,或者您可以#include获取bool。 区别在于整数和指针类型可隐式转换为布尔值,因此您可以编写bool condition = a而不是bool condition = (a!=0);。 或if(a){}
-
JS的空数组是true还是false(内附JS类型转换表)
2019-12-04 14:41:39在和大佬们沟通的时突然说起了这个问题。 就在控制台中打印了一下。 [] == ![] //true 我满脸问号???...这么看空数组是false 但是数组是一个对象,...的确是这样,但是为什么空数组转成数值是0呢? 看一下JavaSc... -
为什么 "a"==true 和 "a"==false 结果都是false ?
2020-04-11 08:00:00这个问题是考察相等操作符在比较的过程中如何进行数据类型转换的,基本规则如下:1.、如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值—— false 转换为0,而 true ... -
python if是如何判断true或False的呢? is和== 有什么区别呢?
2019-01-04 20:44:36其中id用来唯一标示一个对象,type标识对象的类型,value是对象的值。 is判断的是a对象是否就是b对象,是通过id来判断的。 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的。 那么问题来了 []作为 一... -
Debug日志:BOOL与bool,TRUE与true,FALSE与false
2017-09-28 18:14:26bool 与 BOOL 的区别: BOOL型在windef.h头文件...至于true和TRUE,false与FALSE:同样的,true和false是都是布尔值,而TRUE是一个int值(其值为1),FALSE也是int值(其值为0)。 如果这个搞混淆了,就会出现类似 -
JS中数字,字符串,null和undefined转换为bool是true还是false总结
2020-06-30 16:19:11我们经常会遇到定义一个变量然后if判断这个变量的情况,如下面的练习题,经常弄混淆,现对不同数值类型总结如下: 练习题 var s=""; if(s) console.log(1); else console.log(0); 问:输出什么? 1.字符串 1... -
js中True、False如何判断
2020-11-19 22:20:59js规定所有的正负整数都是true,只有0是false; string当作布尔型作比较时,除空字符串是false,其余都是true; 从上面我们可以得出,0是false,‘0’是true; 那为什么会出现‘0’ == 0 >>>>... -
JS中'true'==true为什么返回false
2018-08-08 09:34:31如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1; 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值; 如果一个操作数是对象,... -
js ‘true‘==true ; 为什么返回false?
2021-02-09 14:49:18如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1; 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值; 如果一个操作数是对象,... -
python3的bool值 True、False
2019-08-12 13:52:48一段有意思的代码: ...python的bool类型(True False)实质是int型的1和0 首先,python的True False属于bool型 查看bool类的帮助,bool继承与int python的True False其实就是数值1和0,从图中的运算也可以证... -
javascript中的 return false和return true
2018-12-27 11:48:00关于javascript中的 return false和return true,return 是javascript里函数返回值的关键字,一个函数内处理的结果可以使用return 返回,这样在调用函数的地方就可以用变量接收返回结果。return 关键字内任何类型的... -
MFC UpdateData(FALSE)和UpdateData(TRUE)
2018-11-26 10:45:28当修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE);如果你希望知道用户在对话框中...用窗体上控件中的内容来更新和控件相关连的变量的值(只能更新value类型的变量) 例如:... -
python中true_python中的true是什么
2020-11-29 14:53:12Python的布尔类型有两个值:True和False(注意大小写要区分,首字母大写,注意)0、逻辑运算符:a、与:and(两个都为True,结果才为True)b、或:or(只要一个为True,则为True)c、非:not(把True变为False,把... -
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2021-01-19 18:59:42生活中我们在不停的编写代码,写着JavaScript,很少有时间进行概念上的研究。我呢,今天闲来没啥事,研究了一下...在进行null>=0比较时,它是通过比较null到的答案,如果a=b u4e3afalse,如果a=b>0为true。所以 null -
为什么 NaN===NaN返回false Infinity===Infinity返回true +0===-0返回true
2020-05-22 10:52:43为什么 NaN===NaN返回false Infinity===Infinity返回true +0===-0返回true js中的Number 不同于java等其他语音,js除了新出的bigint外只有一种数字类型 Number Number类型使用 IEEE754 64位浮点类型来表示整数和浮点... -
python中布尔类型是特殊的什么类型_Python中布尔类型
2020-12-03 07:49:07标签:我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算:与运算:只有两个布尔值都为 True 时,计算结果才为 True。True and True # ==> TrueTrue and ... -
python中布尔类型是特殊的什么类型_Python的布尔类型是什么
2020-12-12 13:53:14Python 提供了 bool 类型来表示真(对)或假(错),比如常见的5 > 3比较算式,这个是正确的,在程序世界里称之为真(对),Python...True 和 False 是 Python 中的关键字,当作为 Python 代码输入时,一定要注意字母的... -
python中有哪些类型的布尔值是False?
2019-11-13 22:56:08在python中,以下数值会被认为是...None是python中的一个特殊值,表示什么都没有,它和0、空字符、False、空集合都不一样。 bool(‘False’)的结果是True,因为‘False’是一个不为空的字符串,当被转换成bool... -
JavaScript中为什么null==0为false而null>=0为true
2013-09-12 08:41:00生活中我们在不停的编写代码,写着JavaScript,很少有时间进行概念上的研究。...其实是true。那么是为什么呢?为什么"null>=0"为true呢?null>=0的时候,强转为数字类型。... -
python中的ture是常量吗_python中的true是什么
2020-12-04 12:44:30Python的布尔类型有两个值:True和False(注意大小写要区分,首字母大写,注意)0、逻辑运算符:a、与:and(两个都为True,结果才为True)b、或:or(只要一个为True,则为True)c、非:not(把True变为False,把False变为... -
js中[]==[],为什么执行结果是false
2018-09-29 14:27:32有个数组是空值 arry=[].然后我写了一个判断句。...在进行数组直接与true和false的布尔类型比较时,默认是将数组和布尔类型都转化为了Number类型进行比较,空数组转化为Number类型时为0。这是0==[]肯定是fal... -
什么是变量,和变量的类型
2018-12-08 14:20:00什么是变量: 变量为两个定义和一个等号组成 等号左边为变量的名字,等号的右边为赋给变量的值,只有等号两边都有定义,此变量才会被创建,变量创建后,后续就可以直接使用了。 变量分为两种数据类型,数字型和非... -
python的布尔类型用于什么运算_零基础学python之布尔类型和逻辑运算
2020-12-06 07:06:36布尔类型python中True表示真,False表示假,它们是布尔类型:在python中,bool的True和False是数值1和0的字符串表示格式,实际上bool类型是int类型的一个子类。因为True/False是数值1和0的另一种表示方式,它们可以... -
逻辑结算的结果是什么类型?比较运算的值是什么类型?
2019-10-07 21:58:35逻辑运算符如下: x and y, 如果x为False, 不计算y的值,直接返回x。否则返回y。x or y, 如果x为True,不计算y的值,直接返回x。否则返回y。not x, 如果x为False,...x和y可以是变量或者表达式。 我们知道P... -
python的布尔类型用于什么运算_python布尔类型和逻辑运算
2020-12-06 07:06:03type(True)在python中,bool的True和False是数值1和0的字符串表示格式,实际上bool类型是int类型的一个子类。>>> bool.__bases__(,)因为True/False是数值1和0的另一种表示方式,它们可以直接参与数值运算...