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 字符串中的字符倒转
Sep 06 Python
探究数组排序提升Python程序的循环的运行效率的原因
Apr 01 Python
详解Python中的多线程编程
Apr 09 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
python3中获取文件当前绝对路径的两种方法
Apr 26 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
Django如何使用redis作为缓存
May 21 Python
pandas中DataFrame重置索引的几种方法
May 24 Python
基于Python实现将列表数据生成折线图
Mar 23 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-fpm的配置详解
2013/06/03 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
php array_map()函数实例用法
2021/03/03 PHP
文字幻灯片
2006/06/26 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
详解Nodejs内存治理
2018/05/13 NodeJs
关于vue-router的那些事儿
2018/05/23 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
Java语言程序设计测试题选择题部分
2014/04/03 面试题
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
人事任命通知书
2015/04/21 职场文书
行政二审代理词
2015/05/25 职场文书
《失物招领》教学反思
2016/02/20 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
windows系统搭建WEB服务器详细教程
2022/08/05 Servers
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android