这些天,我使用Matlab / Octave超过十年后,从Matlab过渡到Python。我有两个简单的问题:
ans
相对应的内容?os.system()
,但在Matlab中我们可以通过在实际命令之前放置!
来运行shell命令。 Python中有类似的内容吗?答案 0 :(得分:7)
Python交互模式是Python。您需要使用os.system
或同等身份。或者,您可以使用Ctrl-Z挂起Python,然后使用fg
返回到它。 (假设类似UNIX的环境。)
最后评估的表达式保存在变量_
:
>>> 1 + 2
3
>>> _ * 4
12
答案 1 :(得分:0)
Matlab ans
的Python等价物如下:
ans = (your_expression)
换句话说,最新的表达式并不总是自动保存到默认参考,所以只需像往常一样手动保存。正如@Amadan指出的那样,表达式有时会保存到_
,但并非总是如此。可靠性和清晰度的最佳实践是自己保存。
要运行shell命令,您可以按照建议使用os.system()
。但是,这已被弃用,因此您应该查看subprocess
模块。
答案 2 :(得分:0)
您可能想要使用IPython shell(现在是jupyeter项目的一部分)。在IPython shell中,您也可以使用!
运行系统命令,尽管许多基本命令(如ls
或cd
)无需!
即可运行。与MATLAB不同,您不需要将其作为字符串传递(尽管可以)。所以!ls
在IPython中运行良好,而在MATLAB中你需要!'ls'
。此外,您可以将结果分配给IPython中的变量,这是您在MATLAB中无法做到的。所以a = !ls
在IPython中工作,但在MATLAB中不起作用。此外,如果使用!!
,结果将以易于在Python中使用的形式返回。所以!!ls
返回文件名列表。
IPython仍然使用_
符号来获取先前的结果(除了Python,None
被视为“无结果”,因此未被记录)。您还可以使用__
获得倒数第二个结果,使用___
获得倒数第二个结果。此外,IPython在命令提示符的每一行旁边放置一个数字。要获取特定行的结果,只需执行_n
,其中n
是数字。因此,要获得第3个命令的结果,该命令旁边有数字3
,只需执行_3
。但是,如果结果为None
,则仍然无效。
它有很多功能。您可以使用_i
获取之前的输入(作为字符串)(依此类推,遵循与输出相同的模式)。您可以使用%timeit
和%%timeit
计算时间码。遇到错误后,您可以跳转到调试器。