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

今天在逛知乎时,发现一个以前自己也感到疑惑的问题!问题是如下图:python代码有时候在命令行下和Python Shell中执行的结果不一样?_第1张图片

学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687
有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流!
python代码有时候在命令行下和Python Shell中执行的结果不一样?_第2张图片
python代码有时候在命令行下和Python Shell中执行的结果不一样?_第3张图片
比如上例,同样是使用ctypes类库调用C语言中的printf功能,前者输出的是需要输出的对象,而后者却输出了字符串的长度。python代码有时候在命令行下和Python Shell中执行的结果不一样?_第4张图片
这个例子非常有意思 提醒:使用不熟悉的函数和library是危险的。

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

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

答案是这样:
在这里插入图片描述
这告诉我们一个基本的事实,叫做C中的 printf 函数,实际上返回一个值,这个值代表了它输出的字符的数目,注意是输出的字符数目,而非参数的长度。因此,当你使用script来运行代码的时候,一切当然都是正常的,这是我的结果:在这里插入图片描述
但是,当你使用interactive shell的时候,你得注意到一个基本的事实,那就是:

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

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

你其实看到的输出并不是stdout,而是Python向stdout中输出的内容,因为idle中的显示就是修改stdout来实现的。为了再次说明这个道理,我把我的 Anaconda Python 的REPL的结果截图放在这里,来告诉你,code的结果,在cmd里是可以看到的。python代码有时候在命令行下和Python Shell中执行的结果不一样?_第5张图片

你可能感兴趣的:(Python)