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

学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687
有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流!


比如上例,同样是使用ctypes类库调用C语言中的printf功能,前者输出的是需要输出的对象,而后者却输出了字符串的长度。
这个例子非常有意思 提醒:使用不熟悉的函数和library是危险的。

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

#include <cstdio>
#include <iostream>
using namespace std;
int main()
{cout<<printf("asdf")<<endl;
}

答案是这样:

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

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

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

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

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

  1. python单步调试工具_linux-pdb命令行下python断点调试工具

    一般地,我们可以使用如下的方式进入调试(比如我们要调试的源文件为hello.py): 1. 在命令行启动目标程序,加上-m参数. python -m pdb hello.py 这样程序会自动停在第一行 ...

  2. 【Python】如何清空命令行交互界面的代码

    问题描述 清空命令行很简单,用cls命令即可.但在命令行交互界面写了很多 Python 代码,看着很不舒服,如何清空后从头开始写? 解决方案 os.system(command)使得在子 shell ...

  3. 【Python知识点梳理】10.Python的垃圾回收机制、代码规范及命令行参数

    Python的垃圾回收机制.代码规范及命令行参数 文章目录 1.Python的垃圾回收机制 2.Python的引用计数机制 3.Python中的循环数据结构及引用计数 4.Python中的GC模块 5 ...

  4. 退出python命令行-退出python命令

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 在linux环境下退出python命令模式原创 2016年11月03日 ...

  5. python菜鸟教程h-Python 命令行参数

    Python 命令行参数 Python 提供了 getopt 模块来获取命令行参数. $ python test.py arg1 arg2 arg3 Python 中也可以使用 sys 的 sys.a ...

  6. python getopt使用_Python命令行参数解析模块getopt使用实例

    这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参考下 格式 getopt(args, options ...

  7. 康威生命游戏java_Java Python 康威生命游戏 - 命令行版

    Java & Python 康威生命游戏 - 命令行版(2020年7月23日) 制作背景 高二的时候看霍金的<大设计>最后几页的时候看到里面提到了康威生命游戏,介绍了它的规则,感觉 ...

  8. 设置PATH 环境变量、pyw格式、命令行运行python程序与多重剪贴板

    pyw格式简介: 与py类似,我认为他们俩卫衣的不同就是前者运行时候不显示终端窗口,后者显示 命令行运行python程序: 在我学习python的过程中我通常使用IDLE来运行程序,这一步骤太过繁琐( ...

  9. Python必备基本技能——命令行参数args详解

    Python必备基本技能--命令行参数args详解 1. 效果图 2. 源码 2.1 简单命令行参数 2.1 轮廓检测源代码 参考 这篇博客将介绍一项开发人员.工程师和计算机科学家必备的技能--命令行 ...

最新文章

  1. 修改IDEA项目的JDK应用路径
  2. 实施PLM系统的总结及建议
  3. python小游戏代码大全-python贪吃蛇游戏代码
  4. 编程语言python培训-Python是什么样的编程语言?
  5. Runnable、Callable、Executor、Future、FutureTask关系解读
  6. 找出指定范围的回文数C++代码实现
  7. 华为云welink考试试题_华为内部开启WeLink项目,华为云是这样考虑的-通信/网络-与非网...
  8. C# XML反序列化与序列化举例:XmlSerializer(转)
  9. Django前后端增删改查
  10. 隐藏在数学中的哲理,令人回味无穷
  11. django select option拼接时value中空格后的内容被截断
  12. go语言学习--内核态和用户态(协程)
  13. thinkphp框架知识点
  14. 计算机系统三员试题,2013年计算机软考程序员试题及答案3
  15. Cadance 进行LOGO 制作
  16. 删除页码和从第三页开始有页码
  17. Lumion 9.0 动画渲染的10个技术技巧
  18. Excel-VBA 快速上手(四、Excel 程序事件、工作簿事件、工作表事件)
  19. glassfish 配置 mysql_GlassFish MySql连接池配置 | 学步园
  20. 用scrapy进行网页抓取

热门文章

  1. 【CSDN】【从800+CSDN支持的Emoji表情中筛选出文章标题可用的 1️⃣ 2️⃣ 4️⃣ 个表情并进行分类】(文章标题如何使用Emoji表情)⚽️
  2. Nosql数据库的四大分类
  3. Mybatis-自定义类型处理器
  4. SpringAOP中通过JoinPoint获取值,并且实现redis注解
  5. 牛客题霸 NC13 二叉树的最大深度
  6. Spring Boot——Spring Session Redis整合Spring Security时错误【RedisConnectionFactory is required】解决方案
  7. mahout安装测试
  8. 操作系统 第二章【进程管理】【MOOC答案】
  9. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】
  10. canvas实现在线签名