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 相关文章推荐
python字符串连接的N种方式总结
Sep 17 Python
Python爬取三国演义的实现方法
Sep 12 Python
速记Python布尔值
Nov 09 Python
用Pygal绘制直方图代码示例
Dec 07 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
Python 生成 -1~1 之间的随机数矩阵方法
Aug 04 Python
python抓取京东小米8手机配置信息
Nov 13 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
django 链接多个数据库 并使用原生sql实现
Mar 28 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
利用Python多线程实现图片下载器
Mar 25 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
php字符串分割函数explode的实例代码
2013/02/07 PHP
php调整服务器时间的方法
2015/04/03 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
javascript操作数组详解
2014/12/17 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
python命令 -u参数用法解析
2019/10/24 Python
python输出数学符号实例
2020/05/11 Python
python如何从键盘获取输入实例
2020/06/18 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
火山动力Java笔试题
2014/06/26 面试题
授权委托书样本
2014/04/03 职场文书
个人求职自荐信范文
2014/06/20 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python