python2 与python3的print区别小结


Posted in Python onJanuary 16, 2018

在Python2和Python3中都提供print()方法来打印信息,但两个版本间的print稍微有差异

主要体现在以下几个方面:

1.python3中print是一个内置函数,有多个参数,而python2中print是一个语法结构;

2.Python2打印时可以不加括号:print 'hello world', Python3则需要加括号 print("hello world")

3.Python2中,input要求输入的字符串必须要加引号,为了避免读取非字符串类型发生的一些行为,不得不使用raw_input()代替input()

1. python3中,或许开发者觉得print同时具有两重身份有些不爽,就只留了其中函数的身份:

print(value1, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

从上面的方法原型可以看出,

①. print可以支持多个参数,支持同时打印多个字符串(其中...表示任意多个字符串);

②. sep表示多个字符串之间使用什么字符连接;

③. end表示字符串结尾添加什么字符,指点该参数就可以轻松设置打印不换行,Python2.x下的print语句在输出字符串之后会默认换行,如果不希望换行,只要在语句最后加一个“,”即可。但是在Python 3.x下,print()变成内置函数,加“,”的老方法就行不通了。

>>> print("python", "tab", ".com", sep='') 
pythontab.com 
>>> print("python", "tab", ".com", sep='', end='') #就可以实现打印出来不换行 
pythontab.com

Python2打印时可以不加括号:print 'hello world', Python3则需要加括号 print("hello world")

python3中print必须使用括号,因为它就是一个函数。

总地来说, Python2.7的print不是一个function,而Python3里的print是一个function。
两都调用方式的主要区别如下:

print 'this is a string' #python2.7
print('this is a string') #python3

当然,python2.7里你也可以用括号把变量括起来, 一点都不会错:

print('this is a string') #python2.7

但是python3将print改成function不是白给的:

1. 在python3里,能使用help(print)查看它的文档了, 而python2不行:

>>help(print)
Help on built-in function print in module builtins:

print(...)
 print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

 Prints the values to a stream, or to sys.stdout by default.
 Optional keyword arguments:
 file: a file-like object (stream); defaults to the current sys.stdout.
 sep: string inserted between values, default a space.
 end: string appended after the last value, default a newline.
 flush: whether to forcibly flush the stream.

2 . 在python3里,能更方便的使用输出重定向

python2.7里,你需要以类似于C++的风格完成重定向:

with open('print.txt', 'w') as f:
 print >> f, 'hello, python!'

在python3里:

with open('print.txt', 'w') as f:
 print('hello, python!', file = f)

file是python3 print新加的一个参数。 另一个很handy的参数是sep, 例如打印一个整数数组, 但你想用星号而不是空格连接。python2时可能需要写一个循环来完成, python3里这样就行了:

a = [1, 2, 3, 4, 5]
print(*a, sep = '*')

最后, 如果想在python2.7里使用python3的print,只需要在第一句代码前加入:

from __future__ import print_function

注意, from __future__ import ...一类的语句一定要放在代码开始处。

print输出差异:同一段代码

#/usr/bin/env python
#coding:utf-8
for i in range(1,10):
    for j in range(1,10):
        for k in range(1,10):
            if(i != k)and(i != j)and(k != j):
                print(i,j,k)

pyhon2的输出为 i,j,k
python3的输出为 i j k
python3的输出直接屏蔽了逗号。

另python2 的print后序可不添加括号。
phthon3必须添加括号。

Python 相关文章推荐
Python3基础之基本运算符概述
Aug 13 Python
Python利用Nagios增加微信报警通知的功能
Feb 18 Python
怎样使用Python脚本日志功能
Aug 14 Python
Python算法之求n个节点不同二叉树个数
Oct 27 Python
python+opencv实现的简单人脸识别代码示例
Nov 14 Python
python中学习K-Means和图片压缩
Nov 20 Python
python numpy 显示图像阵列的实例
Jul 02 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
python实现图像拼接
Mar 05 Python
python实现图片批量压缩
Apr 24 Python
pytorch 如何使用amp进行混合精度训练
May 24 Python
python异步的ASGI与Fast Api实现
Jul 16 Python
python正则中最短匹配实现代码
Jan 16 #Python
Python程序员面试题 你必须提前准备!
Jan 16 #Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 #Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 #Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 #Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 #Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 #Python
You might like
Oracle Faq(Oracle的版本)
2006/10/09 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
php curl_init函数用法
2014/01/31 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
jquery 事件对象属性小结
2010/04/27 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
javascript轮播图算法
2016/10/21 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
ET Mall东森购物网:东森严选
2017/03/06 全球购物
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
维德科技C#面试题笔试题
2015/12/09 面试题
项目经理岗位职责
2013/11/11 职场文书
环境工程毕业生自荐信
2013/11/17 职场文书
船舶专业个人求职信范文
2014/01/02 职场文书
文明之星事迹材料
2014/05/09 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书