python执行cmd命令行_python代码有时候在命令行下和Python Shell中执行的结果不一样?...

今天在逛知乎时,发现一个以前自己也感到疑惑的问题!问题是如下图:

d3877abb993f484defba75d91dc44c5a.png
a7a2c409464ebf656ee03db0147597c6.png
dc2b6e8050ddb385b2f514ef600e48ee.png

比如上例,同样是使用ctypes类库调用C语言中的printf功能,前者输出的是需要输出的对象,而后者却输出了字符串的长度。

05a355e5a4aef8fe8efd817953d2d567.png

这个例子非常有意思 提醒:使用不熟悉的函数和library是危险的。

首先,先看这个例子,只是把helloworld.cpp 略加改动,题主觉得这个代码应当输出什么结果?

#include #include using namespace std;int main(){ cout<

答案是这样:

bdfcb2be09206cc43ffa28702b8c1a22.png

这告诉我们一个基本的事实,叫做C中的 printf 函数,实际上返回一个值,这个值代表了它输出的字符的数目,注意是输出的字符数目,而非参数的长度。因此,当你使用script来运行代码的时候,一切当然都是正常的,这是我的结果:

7e5ad2596dc6a1d729c6ebf05eaba48c.png

但是,当你使用interactive shell的时候,你得注意到一个基本的事实,那就是:

这个Python Shell的窗口,并不是cmd或者terminal!

实际上,shell输出什么,取决于他的实现,并不意味着一定会输出代码的结果。

你其实看到的输出并不是stdout,而是Python向stdout中输出的内容,因为idle中的显示就是修改stdout来实现的。为了再次说明这个道理,我把我的 Anaconda Python 的REPL的结果截图放在这里,来告诉你,code的结果,在cmd里是可以看到的。

d35844104cddf1616512c58ffddef463.png

最后小编多说一句!小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值