python代码有时候在命令行下和Python Shell中执行的结果不一样?
今天在逛知乎时,发现一个以前自己也感到疑惑的问题!问题是如下图:
学习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中执行的结果不一样?相关推荐
- python单步调试工具_linux-pdb命令行下python断点调试工具
一般地,我们可以使用如下的方式进入调试(比如我们要调试的源文件为hello.py): 1. 在命令行启动目标程序,加上-m参数. python -m pdb hello.py 这样程序会自动停在第一行 ...
- 【Python】如何清空命令行交互界面的代码
问题描述 清空命令行很简单,用cls命令即可.但在命令行交互界面写了很多 Python 代码,看着很不舒服,如何清空后从头开始写? 解决方案 os.system(command)使得在子 shell ...
- 【Python知识点梳理】10.Python的垃圾回收机制、代码规范及命令行参数
Python的垃圾回收机制.代码规范及命令行参数 文章目录 1.Python的垃圾回收机制 2.Python的引用计数机制 3.Python中的循环数据结构及引用计数 4.Python中的GC模块 5 ...
- 退出python命令行-退出python命令
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 在linux环境下退出python命令模式原创 2016年11月03日 ...
- python菜鸟教程h-Python 命令行参数
Python 命令行参数 Python 提供了 getopt 模块来获取命令行参数. $ python test.py arg1 arg2 arg3 Python 中也可以使用 sys 的 sys.a ...
- python getopt使用_Python命令行参数解析模块getopt使用实例
这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参考下 格式 getopt(args, options ...
- 康威生命游戏java_Java Python 康威生命游戏 - 命令行版
Java & Python 康威生命游戏 - 命令行版(2020年7月23日) 制作背景 高二的时候看霍金的<大设计>最后几页的时候看到里面提到了康威生命游戏,介绍了它的规则,感觉 ...
- 设置PATH 环境变量、pyw格式、命令行运行python程序与多重剪贴板
pyw格式简介: 与py类似,我认为他们俩卫衣的不同就是前者运行时候不显示终端窗口,后者显示 命令行运行python程序: 在我学习python的过程中我通常使用IDLE来运行程序,这一步骤太过繁琐( ...
- Python必备基本技能——命令行参数args详解
Python必备基本技能--命令行参数args详解 1. 效果图 2. 源码 2.1 简单命令行参数 2.1 轮廓检测源代码 参考 这篇博客将介绍一项开发人员.工程师和计算机科学家必备的技能--命令行 ...
最新文章
- 修改IDEA项目的JDK应用路径
- 实施PLM系统的总结及建议
- python小游戏代码大全-python贪吃蛇游戏代码
- 编程语言python培训-Python是什么样的编程语言?
- Runnable、Callable、Executor、Future、FutureTask关系解读
- 找出指定范围的回文数C++代码实现
- 华为云welink考试试题_华为内部开启WeLink项目,华为云是这样考虑的-通信/网络-与非网...
- C# XML反序列化与序列化举例:XmlSerializer(转)
- Django前后端增删改查
- 隐藏在数学中的哲理,令人回味无穷
- django select option拼接时value中空格后的内容被截断
- go语言学习--内核态和用户态(协程)
- thinkphp框架知识点
- 计算机系统三员试题,2013年计算机软考程序员试题及答案3
- Cadance 进行LOGO 制作
- 删除页码和从第三页开始有页码
- Lumion 9.0 动画渲染的10个技术技巧
- Excel-VBA 快速上手(四、Excel 程序事件、工作簿事件、工作表事件)
- glassfish 配置 mysql_GlassFish MySql连接池配置 | 学步园
- 用scrapy进行网页抓取
热门文章
- 【CSDN】【从800+CSDN支持的Emoji表情中筛选出文章标题可用的 1️⃣ 2️⃣ 4️⃣ 个表情并进行分类】(文章标题如何使用Emoji表情)⚽️
- Nosql数据库的四大分类
- Mybatis-自定义类型处理器
- SpringAOP中通过JoinPoint获取值,并且实现redis注解
- 牛客题霸 NC13 二叉树的最大深度
- Spring Boot——Spring Session Redis整合Spring Security时错误【RedisConnectionFactory is required】解决方案
- mahout安装测试
- 操作系统 第二章【进程管理】【MOOC答案】
- JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】
- canvas实现在线签名