当前位置: 首页 > 面试题库 >

Python:如果不是val,则如果val为None

任飞龙
2023-03-14
问题内容

我一直以样式进行编码if not value,但是,一些指南引起了我的注意,尽管这种样式有效,但似乎存在两个潜在问题:

  1. 它不完全可读;if value is None当然更容易理解。
  2. 这可能影响后(并导致微妙的错误),因为像[],并0会评估为False也。

我也开始将此想法应用于其他比较,例如:

  • if not valueif value is False
  • if not valueif value is []

清单也是如此…

问题是,您对这一原则走了多远?在确保代码安全的同时,在哪里划界线?

if value is None无论如何,我应该始终使用该样式吗?


问题答案:

如果需要的话,可以使用与“无”的比较。如果您只是想检查该值是否被认为是错误的,请使用“ if not value”(空列表,none,false)。

我发现“如果没有价值”看起来更简洁,更Python化。

另外,请注意列表。比较空列表时,请勿使用is。如果您知道要获取列表,请使用“ if”检查列表是否包含任何内容(或len())。尝试将其输入解释器

>>> a = []
>>> a is []
False

这是因为您刚创建的临时列表在内存中的地址与存储在“
a”中的地址不同。您不会看到None,False或True,因为它们都是单例值(它们都指向内存的同一部分),因此使用’is’关键字是可行的。

您还将发现CPython会实习字符串,因此以下工作。

>>> 'a' is 'a'
True

你应该 靠这个。这是一个实现细节,并非指定要与每个Python版本一起使用。



 类似资料:
  • 描述 (Description) val( val )方法设置每个匹配元素的输入值。 如果在单选按钮,复选框或选择选项上调用此方法,则它将检查或选择传递的值。 语法 (Syntax) 以下是使用此方法的简单语法 - <i>selector</i>.val( val ) 参数 (Parameters) 以下是此方法使用的所有参数的说明 - val - 如果在“input”上调用它,但是如果在“s

  • 问题内容: 这两行代码有什么区别: 和 一个比另一个更有效吗? 会更好用吗 问题答案: 使用一下两个版本生成的字节码: 后者的操作较少,因此效率可能会略高一些。 在致谢中指出了),您所进行的操作与操作数量完全相同,只是更改并切换为: : 在这种情况下,除非每次比较所需的工作量有所不同,否则您根本看不到任何性能差异。 但是,请注意,这两个版本 不会永远是逻辑上相同的 ,因为这将取决于实现方式和有问题

  • 描述 (Description) val( )方法获取第一个匹配元素的输入值。 语法 (Syntax) 以下是使用此方法的简单语法 - <i>selector</i>.val( ) 参数 (Parameters) 以下是此方法使用的所有参数的说明 - NA 例子 (Example) 下面的示例将设置第二段中第一个输入框的HTML内容 - <html> <head> <titl

  • 本文向大家介绍knockout.js 如果/如果不是,包括了knockout.js 如果/如果不是的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用if绑定来确定是否应创建节点的子元素。 if绑定的逆是ifnot 相当于 有时,您无需创建容器就无法控制元素的存在(通常是针对中的<li>元素<ul>或中的<option>元素<select>) 淘汰赛可使用基于注释标签的无容器控制流语法来实现

  • 问题内容: 我正在尝试编写一些通用方法(CRUD方法)以在我的服务之间共享它。以下示例是一种方法,该方法返回集合中存在的所有文档: 我也做了一些反思,但后来: 恐慌:reflect.Set:原始类型D的值不能分配给 mongodb.Test类型[已恢复]恐慌:reflect.Set:原始类型D的值不能分配给 mongodb.Test类型 我想要的是与(您可以在上面看到的)相同的方法 问题答案: 方