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 相关文章推荐
5种Python单例模式的实现方式
Jan 14 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
python实现聚类算法原理
Feb 12 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
python实现多层感知器
Jan 18 Python
Django ModelForm组件使用方法详解
Jul 23 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Python判断三段线能否构成三角形的代码
Apr 12 Python
django 模版关闭转义方式
May 14 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 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
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
PHP面向对象详解(三)
2015/12/07 PHP
JS去除右边逗号的简单方法
2013/07/03 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
Javascript实现飞动广告效果的方法
2015/05/25 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
2019/05/10 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
Python中扩展包的安装方法详解
2017/06/14 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
一篇.NET面试题
2014/09/29 面试题
应届生保险求职信
2013/11/11 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
家长给学校的建议书
2014/05/15 职场文书
2014年科普工作总结
2014/12/06 职场文书
会计工作态度自我评价
2015/03/06 职场文书
会计求职信怎么写
2015/03/20 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript