首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python如何在交互式解释器和jupyter笔记本中使用字符串

python如何在交互式解释器和jupyter笔记本中使用字符串
EN

Stack Overflow用户
提问于 2020-11-18 00:27:32
回答 1查看 136关注 0票数 1

我正在尝试理解python在什么时候实习生常量,什么时候没有,我使用python 3.8.5来回答这个问题。我理解在python3.7之后,python从peephole优化变成了AST优化器,更长的字符串现在被嵌入了。

我原以为这一切都在我的控制之下,直到我尝试在相同的conda环境下,用相同版本的python运行相同的命令--在jupyter笔记本和交互解释器中运行。

代码语言:javascript
复制
>>> sys.version
'3.8.5 (default, Sep  4 2020, 02:22:02) \n[Clang 10.0.0 ]'

>>> "AvocadoAvocadoAvocadoAvocadoAvocado !" is "AvocadoAvocadoAvocadoAvocadoAvocado !"
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
False

在木星笔记本里

代码语言:javascript
复制
import sys
sys.version

给出

代码语言:javascript
复制
'3.8.5 (default, Sep  4 2020, 02:22:02) \n[Clang 10.0.0 ]'
代码语言:javascript
复制
"AvocadoAvocadoAvocadoAvocadoAvocado !" is "AvocadoAvocadoAvocadoAvocadoAvocado !"

给出

代码语言:javascript
复制
<>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
<>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
<ipython-input-6-2414f185945a>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
  "AvocadoAvocadoAvocadoAvocadoAvocado !" is "AvocadoAvocadoAvocadoAvocadoAvocado !"
True

我不明白为什么结果在翻译中是假的,在笔记本里是真的。我也想知道为什么笔记本上有三个警告,而翻译中只有一个警告,这是否有任何线索,为什么结果是不同的。

为什么我在互动式翻译中会出现错误,而在朱庇特笔记本中却是真实的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-18 02:20:10

在python (和其他语言)中,有很多东西看起来都是工作的,但却违背了它们应该如何工作的定义。对象标识就是其中之一。is关键字的目的绝不是比较某物的值,而是测试两个变量是否引用同一个基础对象。如果它们是相同的对象,那么值也必须相等,这似乎是有意义的,但是这个语句完全不是正确的。这有时会正常工作(正如您已经发现的那样),而不会引发异常,但是它不是python的一个定义特性。这些都是“执行依赖”的东西,永远不能保证给出正确的甚至稳定的结果。

显然,ipython没有以通过内置的REPL:https://github.com/satwikkansal/wtfpython/issues/100#issuecomment-549171287提交的方式将代码块提交给cpython二进制文件。

我假设这是为了减少前端在发送多行代码时必须发送到内核的消息的数量。我希望从命令行执行.py文件的行为在这方面会更好地匹配从ipython获得的结果。

按照这些思路,有时可以在删除后但在垃圾收集之前恢复对象,因为id函数的id返回对象的内存位置,该对象可以与ctypes一起使用来构造新的PyObject。这是一种在代码中引入bug和不稳定性的方法。如果由于某种原因,id被切换到每个分配项的简单计数器上(也许您希望防止泄漏有关进程内存空间的任何信息),这将立即中断。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64885300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档