精华内容
下载资源
问答
  • 前言众所周知在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和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

    >>>

    展开全文
  • 本文介绍 UseShellExecute 属性的作用,设为 true false 时,分别有哪些进程启动行为上的差异。 本文内容本质差异效果差异如何选择 本质差异 Process.Start 本质上启动一个新的子进程,不过这个属性的不同,...

    在 .NET 中创建进程时,可以传入 ProcessStartInfo 类的一个新实例。在此类型中,有一个 UseShellExecute 属性。

    本文介绍 UseShellExecute 属性的作用,设为 truefalse 时,分别有哪些进程启动行为上的差异。


    本质差异

    Process.Start 本质上是启动一个新的子进程,不过这个属性的不同,使得启动进程的时候会调用不同的 Windows 的函数。

    当然,如果你知道这两个函数的区别,那你自然也就了解此属性设置为 truefalse 的区别了。

    效果差异

    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/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

    展开全文
  • 您忘记了FILE_NOT_FOUND因为它类型的在Java中,只能使用" true"" false"来确定布尔条件。 您不能像在CC ++中那样将其他原始类型用作默认的" 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){}

    展开全文
  • 大佬们沟通的时突然说起了这个问题。 就在控制台中打印了一下。 [] == ![] //true 我满脸问号???...这么看空数组是false 但是数组一个对象,...的确这样,但是为什么空数组转成数值0呢? 看一下JavaSc...
  • 这个问题考察相等操作符在比较的过程中如何进行数据类型转换的,基本规则如下:1.、如果有一个操作数布尔值,则在比较相等性之前先将其转换为数值—— false 转换为0,而 true ...
  • 其中id用来唯一标示一个对象,type标识对象的类型,value对象的值。 is判断的a对象是否就是b对象,通过id来判断的。 ==判断的a对象的值是否b对象的值相等,通过value来判断的。 那么问题来了 []作为 一...
  • bool 与 BOOL 的区别: BOOL型在windef.h头文件...至于true和TRUE,false与FALSE:同样的,true和false是都是布尔值,而TRUE是一个int值(其值为1),FALSE也是int值(其值为0)。 如果这个搞混淆了,就会出现类似
  • 我们经常会遇到定义一个变量然后if判断这个变量的情况,如下面的练习题,经常弄混淆,现对不同数值类型总结如下: 练习题 var s=""; if(s) console.log(1); else console.log(0); 问:输出什么? 1.字符串 1...
  • js规定所有的正负整数都是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; 如果一个操作数字符串,另一个操作数数值,在比较相等性之前先将字符串转换为数值; 如果一个操作数对象,...
  • 如果有一个操作数布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1; 如果一个操作数字符串,另一个操作数数值,在比较相等性之前先将字符串转换为数值; 如果一个操作数对象,...
  • python3的bool值 TrueFalse

    千次阅读 2019-08-12 13:52:48
    一段有意思的代码: ...python的bool类型True False)实质int型的10 首先,python的True False属于bool型 查看bool类的帮助,bool继承与int python的True False其实就是数值10,从图中的运算也可以证...
  • 关于javascript中的 return false和return true,return javascript里函数返回值的关键字,一个函数内处理的结果可以使用return 返回,这样在调用函数的地方就可以用变量接收返回结果。return 关键字内任何类型的...
  • 当修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE);如果你希望知道用户在对话框中...用窗体上控件中的内容来更新控件相关连的变量的值(只能更新value类型的变量) 例如:...
  • Python的布尔类型有两个值:True和False(注意大小写要区分,首字母大写,注意)0、逻辑运算符:a、与:and(两个都为True,结果才为True)b、或:or(只要一个为True,则为True)c、非:not(把True变为False,把...
  • 生活中我们在不停的编写代码,写着JavaScript,很少有时间进行概念上的研究。我呢,今天闲来没啥事,研究了一下...在进行null>=0比较时,它通过比较null到的答案,如果a=b u4e3afalse,如果a=b>0为true。所以 null
  • 什么 NaN===NaN返回false Infinity===Infinity返回true +0===-0返回true js中的Number 不同于java等其他语音,js除了新出的bigint外只有一种数字类型 Number Number类型使用 IEEE754 64位浮点类型来表示整数浮点...
  • 标签:我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算:与运算:只有两个布尔值都为 True 时,计算结果才为 True。True and True # ==> TrueTrue and ...
  • Python 提供了 bool 类型来表示真(对)或假(错),比如常见的5 > 3比较算式,这个正确的,在程序世界里称之为真(对),Python...True False Python 中的关键字,当作为 Python 代码输入时,一定要注意字母的...
  • python中有哪些类型的布尔值是False

    千次阅读 2019-11-13 22:56:08
    在python中,以下数值会被认为...Nonepython中的一个特殊值,表示什么都没有,它0、空字符、False、空集合都不一样。 bool(‘False’)的结果是True,因为‘False一个不为空的字符串,当被转换成bool...
  • 生活中我们在不停的编写代码,写着JavaScript,很少有时间进行概念上的研究。...其实是true。那么什么呢?为什么"null&gt;=0"为true呢?null&gt;=0的时候,强转为数字类型。...
  • Python的布尔类型有两个值: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...
  • 什么是变量: 变量为两个定义一个等号组成 等号左边为变量的名字,等号的右边为赋给变量的值,只有等号两边都有定义,此变量才会被创建,变量创建后,后续就可以直接使用了。 变量分为两种数据类型,数字型非...
  • 布尔类型python中True表示真,False表示假,它们是布尔类型:在python中,bool的True和False是数值1和0的字符串表示格式,实际上bool类型是int类型的一个子类。因为True/False是数值1和0的另一种表示方式,它们可以...
  • 逻辑运算符如下: x and y, 如果x为False, 不计算y的值,直接返回x。否则返回y。x or y, 如果x为True,不计算y的值,直接返回x。否则返回y。not x, 如果x为False,...xy可以变量或者表达式。 我们知道P...
  • type(True)在python中,bool的True和False是数值1和0的字符串表示格式,实际上bool类型是int类型的一个子类。>>> bool.__bases__(,)因为True/False是数值1和0的另一种表示方式,它们可以直接参与数值运算...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,039
精华内容 415
热门标签
关键字:

true和false是什么类型