如何配置 IPython 以与普通 Python REPL 相同的方式执行单元块?

2024-02-21

普通 Python REPL:

>>> 'na'
'na'
>>> for i in range(4):
...     f'{_+_}'
... else:
...     'batman'
... 
'nana'
'nananana'
'nananananananana'
'nananananananananananananananana'
'batman'
>>> 

具有相同解释器的 IPython REPL:

>>> 'na'
'na'
>>> for i in range(4): 
...     f'{_+_}' 
... else: 
...     'batman' 
...
>>> _
'na'

这个区别是显然与IPython编译代码的模式有关 https://stackoverflow.com/a/46029260/674039,并且与显示挂钩 https://docs.python.org/3/library/sys.html#sys.displayhook。是否可以将 IPython 配置为像普通 Python REPL 一样编译/执行单元块?我希望 IPython 不会干扰或修改此类底层运行时机制。


Set the InteractiveShell.ast_node_interactivity https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity设置为'all',或者通过%config魔法命令:

%config InteractiveShell.ast_node_interactivity='all'

或者在你的ipython_config.py

c.InteractiveShell.ast_node_interactivity = 'all'

这将导致 IPython 编译所有内容'single'mode,触发的模式sys.displayhook, 代替'exec'模式,不使用sys.displayhook.


可能的设置InteractiveShell.ast_node_interactivity目前是

  • 'all': 编译所有内容'single' mode.
  • 'last':编译单元格的最后一个(简单或复合)语句'single'模式。不同于'all'在类似的情况下

    In [7]: for i in range(5):
       ...:     i
       ...: for i in range(3):
       ...:     i
       ...:     
    Out[7]: 0
    Out[7]: 1
    Out[7]: 2
    

    'all'会打印的值i来自两个循环。

  • 'last_expr':编译单元格的最后一条语句'single'mode 如果该语句是表达式语句。这是 IPython 的默认设置。

  • 'none': 编译所有内容'exec' mode.

  • 'last_expr_or_assign': like 'last_expr',但是如果最后一个语句是赋值语句,则执行一些额外的 AST 转换来打印分配的值:

    In [2]: xyz = "something else"
    Out[2]: "something else"
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何配置 IPython 以与普通 Python REPL 相同的方式执行单元块? 的相关文章

随机推荐

  • 使用 Azure API 管理模拟故障转移

    Azure API 管理支持多区域部署 这对于我们的 API 和后端服务的 HA 非常有用 我们正在使用它来测试我们的多区域部署 但是 我们如何测试它呢 我们如何模拟或手动触发 API 管理上的故障转移 提前致谢 APIM 的优质捆绑提供了
  • 使用 xargs 进行并行 Python 脚本

    我目前有一个 bash 脚本 script sh 带有两个嵌套循环 第一个枚举 a 的可能值 第二个枚举 b 的可能值 例如 bin sh for a in 1 10 do for b in 1 10 do nohup python scr
  • Nuxt SSR - 我无法检查用户是否经过身份验证

    我正在尝试使用带有会话身份验证的 Django 后端的 Nuxt SSR 前端 我希望在我的前端中有一些 SSR 页面以及客户端渲染的页面 所以我正在使用通用模式 问题是我没有找到一种工作方法来在加载页面之前检查用户是否经过身份验证 因此我
  • Grails 条件可为空验证或带有可为空选项的自定义验证器

    我有一个表格来创建一个地方 根据国家 地区的不同 省 州 地区 字段是否为必填项 当不需要时 我希望为null 而不是空字符串 我有使所有空表单字段为空的代码 def newparams place new Place params eac
  • 在 MSBuild 中获取本机 exe 的文件版本

    我在 Visual Studio 2010 解决方案中有许多 Visual C 项目 此解决方案中还有一个 WiX 项目 它为可执行文件 C 项目之一的产品 构建安装程序 可执行文件在其项目中有一个资源文件 它将程序的版本写入可执行文件 现
  • Nuget Config.Transform 格式问题

    我创建了一个Nuget 配置转换文件 http docs nuget org docs creating packages configuration file and source code transformations具有以下变换
  • ActivityInstrumentationTestCase2 中的模拟帐户

    在我的活动中 我获得了帐户onCreate public void MyActivity extends Activity private Account accounts Override protected void onCreate
  • 什么是概率数据结构?

    我读过有关 概率 数据结构的内容 例如布隆过滤器和跳过列表 概率数据结构有哪些共同特征以及它们的用途是什么 可能有很多不同的 并且很好的 答案 但以我的拙见 概率数据结构的共同特征是它们为您提供近似的而不是精确的答案 这里有多少件物品 大约
  • 最终瞬态字段的序列化/反序列化

    In this https stackoverflow com questions 2968876 final transient fields and serialization问题说final transient序列化后字段不能设置为任
  • 检测数组中作为复杂多边形顶点的一组点是否按顺时针或逆时针顺序定义?

    编辑 我更新了program http colekito com ProgrammingProjects Science 20Fair 有了答案 效果很好 我正在做一个program http colekito com Programmin
  • 如何让 SQLAlchemy 覆盖 MySQL“更新 CURRENT_TIMESTAMP”

    我继承了一个较旧的数据库 该数据库设置为 更新时 CURRENT TIMESTAMP 该字段放在一个仅应该描述项目创建的字段上 使用 PHP 我一直在 UPDATE 子句上使用 timestamp timestamp 但在 SQLAlche
  • C++ system() 函数 — 如何收集发出的命令的输出?

    我正在使用 C 运行一些命令system 功能 int system const char command 如何从发出的命令中收集标准输出 具体来说 我想收集发出的命令的输出 例如 发出命令的输出的目录列表 dir命令 您是否正在寻找执行命
  • 测量 ASP.NET Core 中异步代码与同步代码的性能

    我正在尝试使用 SQL Server Express 和 EF Core 3 1 3 来衡量 ASP NET Core 3 1 中异步与同步的性能 并且有两个完全相同的函数 除了一个是异步的 一个是同步的 HttpGet search de
  • 我们如何根据索引更新dynamodb表(而不是基于主键和范围键)

    我们如何基于索引 而不是基于主键和范围键 更新dynamodb表 我有一个按名称创建的索引key id index哈希值是asset id范围是hit id 我想根据以下内容更新表格key id index因为我在更新时不知道这些 var
  • 我获得了客户端中间件,但如何保护 S3 上的用户资源?

    我得到了客户端中间件 但我不希望出现用户意外或恶意删除其他用户的资源的情况 如何保护 S3 上的资源 以便用户只能删除自己的资源 而不能删除任何其他用户的资源 非常感谢 我不希望出现用户意外或恶意删除其他用户资源的情况 当您设置 S3 存储
  • Webpack hmr:__webpack_hmr 404 未找到

    我正在使用 webpack dev server 进行热模块替换 它工作得很好 但是这个错误每隔几秒钟就会出现在控制台中 GET http mysite 8080 webpack hmr 404 Not Found 这是我的 webpack
  • JSON Patch 规范的解释

    我有一个关于 JSON Patch 的解释的问题 RFC 6902 https www rfc editor org rfc rfc6902 假设我有一个如下所示的资源 type assembly uri http example com
  • useMemo 与 useEffect + useState

    使用有什么好处吗useMemo 例如 对于密集的函数调用 而不是使用组合useEffect and useState 这里有两个定制的钩子 乍一看它们的工作原理完全相同 此外useMemo的返回值为null在第一次渲染时 useEffect
  • 简单就地离散傅立叶变换 (DFT)

    我正在编写一个非常简单的就地 DFT 我正在使用此处显示的公式 http en wikipedia org wiki Discrete Fourier transform Definition http en wikipedia org w
  • 如何配置 IPython 以与普通 Python REPL 相同的方式执行单元块?

    普通 Python REPL gt gt gt na na gt gt gt for i in range 4 f else batman nana nananana nananananananana nananananananananan