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出现_warn_unsafe_extraction问题的方法
Mar 24 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
python语言元素知识点详解
May 15 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
对python3.4 字符串转16进制的实例详解
Jun 12 Python
Python实现计算对象的内存大小示例
Jul 10 Python
Python代码实现http/https代理服务器的脚本
Aug 12 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
浅析python 字典嵌套
Sep 29 Python
OpenCV-Python实现油画效果的实例
Jun 08 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获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
js获取视频时长代码
2014/04/10 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python heapq使用详解及实例代码
2017/01/25 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
使用python实现链表操作
2018/01/26 Python
实例讲解python中的序列化知识点
2018/10/08 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
秦兵马俑教学反思
2014/02/07 职场文书
介绍信样本
2015/01/31 职场文书
国富论读书笔记
2015/06/26 职场文书
HTML基础详解(上)
2021/10/16 HTML / CSS