首页>Program>source
Variable = None

在特定情况下,这三个之间是否有区别? 如果没有区别,哪一个更适合使用?

if Variable:
 print "Hello world"

if Variable is not None:
 print "Hello world"

if Variable != None:
 print "Hello world"

在无变量的情况下是相同的吗?

最新回答
  • 1月前
    1 #

    Is there any difference between these three in a specific scenario ?

    第一个询问变量是否虚假.除 None之外,该测试将因其他所有原因而失败 — False ,威兹威兹 ,任何空序列等。

    第二个询问是否是魔术单例常数 0 .这只会对 None失败   本身。

    第三个询问是否是任何认为自己等于 None的东西 .对于 None,这将失败 ,其中 Holder(None)   是一个包装器类,其实例与其持有的实例进行比较.或者,给出一个不太现实但简短的代码示例:

    Holder
    

    最后一个很少有用; 实际上,如果您认为您可能需要检查 class Stupid(object): def __ne__(self, other): return False Variable = Stupid()   或 == None ,而您并没有专门创建透明包装类或类似的东西,您实际上可能想要 != None   或 is None .但是其他两个都是非常有用且通用的。

    威兹威兹

    好吧,有什么区别了,哪个更合适取决于具体用途。

    在问题的结尾,似乎您可能正在询问 is not None在特定情况下是否有任何区别   绝对是

    if there is no difference which one is more suitable to use?

    .在那种情况下,这三个之间当然没有功能上的区别。*它们全部都保证是假的,因此什么也不做.这意味着这三者与完全不编写代码之间也没有区别.这更简单,更易读,更快捷。

    *两者之间存在性能差异-第一个不必 Variable   维兹维兹 ,或致电比较运算子.而且,即使您设法以某种方式重新绑定了 None   或更改 LOAD_CONST的值   常量(也许是用 None在整个堆中踩踏 ?),第一个仍然更有可能继续工作.但是,这些都不是问题-而且,如果再这样做,则根本没有代码会更快,更可靠。

  • 1月前
    2 #

    None   如果 None将为真   是 ctypes ,威兹威兹 ,威兹威兹 ,威兹威兹 等

    not x   将永远是 x ,除非变量实际上是 None

    编辑:

    无论何时要检查变量是否实际设置为适当的值,这都具有实际意义.否则,您可能会遇到问题.例如,如果您要评估项目列表并执行以下操作:

    False
    

    要检查是否提供了列表,则条件将在一个空列表上触发,该列表可能仍然是有效输入.因此,在这种情况下,您想使用

    []
    

    允许将空列表作为有效输入,但仍要检查是否根本没有提供列表的情况。

    维兹维兹   这样的value可与 {}媲美   或 x is not None   某些语言的value.它是占位符,表示已定义变量中缺少值(如果未定义,则会抛出 True ).这就是为什么 None   在某些情况下,该值将用作默认值:

    if not x:
    

    它也经常用作可选变量的默认值:

    if x is not None:
    

    这样, None   仍然是有效值,该值将为 null   如果用 nil检查

  • 1月前
    3 #

    PEP 8的官方建议是通过身份检查来测试None

    NameError
    

    平等/不平等测试也可以工作,但速度较慢且不习惯:

    None
    

    测试变量的布尔值会产生不同的结果.如果变量是空容器或等于零的数字,则以下测试将print" hello world":

    >>> def foo():
    ...     pass
    ...
    >>> x = foo()
    >>> x is None
    True
    

  • 1月前
    4 #

    它们是不同的.威兹威兹   检查是否 >>> def foo(bar=None): ... if bar is None: ... print('No argument passed.') ... else: ... print('Variable bar: %s' % str(bar)) ... >>> foo(0) Variable bar: 0 >>> foo() No argument passed.   对 0求值 .

    例如

    False
    

    if not bar:   检查x是否为 if Variable is not None: print "Hello world"   本身。

    if Variable != None: print "Hello world"

  • excel:如何在同一单元格中查找重复项并擦除VBA中的一个实例
  • Android碎片和"后退"按钮问题