每次分配变量时,IPython中是否有参数打印变量?
目前:
In [1]: a = 5
In [2]: a
Out[2]: 5
In [3]: b = a + 1
In [4]: b
Out[4]: 6
在matlab中,除非在最后写一个;
,否则打印变量,在ipython中我想用这样的魔术函数激活它:
In [1]: %printassignment
In [2]: a = 5
a = 5
In [3]: b = a + 1
b = 6
我可以写出自己的魔法,但我很确定这是一个标准的人会制作一个超级调整的标准功能。该功能对初学者特别有用。
答案 0 :(得分:4)
从IPython 6.2开始,this exists,但打开它的命令真的很长:
%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'
如果您希望默认设置为ipython_config.py
,则可以在c.InteractiveShell.ast_node_interactivity = 'last_expr_or_assign'
中进行设置:
arr[i] = val
仅在分配目标是简单名称时触发; <{1}}或obj.attr = 3
等作业不会自动打印。
答案 1 :(得分:0)
对于旧版本的IPython,请尝试以下操作……
from IPython.core.inputtransformer import InputTransformer
import re
class PrintAssignment(InputTransformer):
def __init__(self):
self.assignment = re.compile('^([a-z]+) =')
self.most_recent_line = None
def push(self, line):
self.most_recent_line = line
return line
def reset(self):
if not self.most_recent_line: return
match = self.assignment.match(self.most_recent_line)
self.most_recent_line = None
if match: return match.group(1)
然后使用
注册此输入处理程序ip = get_ipython()
ip.physical_line_transforms.append(PrintAssignment())