上一个dev在代码中留下了一个非常奇怪的not x is No
yoda条件:
>>> x = None
>>> not x is None
False
>>> x = 1
>>> not x is None
True
经过一些测试,我发现与x相同的输出不是None
。
>>> x = None
>>> not x is None
False
>>> x is not None
False
>>> x = 1
>>> not x is None
True
>>> x is not None
True
是不是x是无
总是等同于x不是无
?
要分解条件,是不是(x是无)
还是(不是x)是无
?还是前者永远等同于后者?
is not
is(我相信,是Python中唯一的)两个关键字运算符,x不是y
完全等同于notx是y
。id(x)!=id(y)
。最好的读者理解标准拼写是x不是y
。
因为is
比not
有更高的优先级,所以表达式是等价的:
如果x=None
:x为None
计算为True
,非x为None
计算为False
如果x=1
:x为None
计算为False
,非x为None
计算为True
如果x=No
:x不是No
求值为False
如果x=1
:x不是No
求值为True
。
因此,即使这些动作在语法上是不等价的,结果也是等价的。
这是的AST不是x是无
:
这是x的AST不是None
:
从第二个图中可以看出,内部节点是比较节点,因此在not
之前计算x is No
。
关于表达式的实际计算,python似乎为这两者创建了相同的字节码。在本例中可以看到:
def foo(x):
x is not None
def bar(x):
not x is None
import dis
dis.dis(foo)
dis.dis(bar)
因为两者都产生:
0 LOAD_FAST 0 (x)
3 LOAD_CONST 0 (None)
6 COMPARE_OP 9 (is not)
9 POP_TOP
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
Yoda 是一个智能、强大的命令行个人助理,可以帮助您完成一些琐碎的任务,由 Python 编写而成。 用法 Yoda 包含一个简单的聊天机器人。您可以使用下面的聊天命令与它交互。 $ yoda chat who are you 样例输出: Yoda speaks: I'm a virtual agent $ yoda chat how are you I'm doing very well. T
我们正在尝试将应用程序从Spring迁移到Quarkus Spring。我们可以根据需要重新编写应用程序逻辑。问题来了,因为我们正在使用共享的spring罐,这是传统的,而且数量很多。大多数spring JAR都使用@Autowired使用依赖项注入,但被注入的相应类没有@Component注释。 将用示例描述问题: 类“MyProject”属于Quarkus应用程序 类OtherLevelOne
问题内容: 对于似乎很简单的问题,我找不到解决方案。假设有2种实体类: 如何创建一个标准查询以返回包含至少一个满足给定条件(例如b.text =’condition’)的B实体的所有A? 问题答案: 我认为此链接可能很有用:http : //mikedesjardins.net/2008/09/22/hibernate-criteria- subqueries-exists/ 它包含以下有关如何创
问题内容: 我正在寻找类似于uploadify的文件上传器,并带有进度条,该进度条不依赖闪存,最好使用jQuery-这可能吗? 问题答案: 当然可以。几个使用不同代码和教程的站点是: http://github.com/drogus/jquery-upload-progress(由DrJokepu忍者;) http://t.wits.sg/2008/06/25/howto-php-and-jque
我的角码出了什么问题?我得到以下错误: 无法读取BrowserDomAdapter.RemoveClass中未定义的属性“Remove”
Spring 4.3.x与JDK 11不兼容。确切地说,在Tomcat上运行的web应用程序中,Spring代码的哪一部分不能与JDK 11兼容?我没有使用Spring AOP、JMS、消息传递、ORM、OXM、测试、Portlet和WebSocket。