Python 2与Python3的区别介绍

运维救火
• 阅读 1059

越来越多的库要放弃Python 2了,强哥也开始转向Python 3了。最近的项目开始用Python3写了,也体会了一下2和3的区别。主要的一些区别在以下几个方面:

print函数
整数相除
Unicode
异常处理
xrange
map函数
不支持has_key

print函数
Python 2中print是语句(statement),Python 3中print则变成了函数。在Python 3中调用print需要加上括号,不加括号会报SyntaxError

Python 2

print "hello world"
输出

hello world

Python 3

print("hello world")
输出

hello world

print "hello world"
输出

File "<stdin>", line 1

print "hello world"
                  ^

SyntaxError: Missing parentheses in call to 'print'

整数相除
在Python 2中,3/2的结果是整数,在Python 3中,结果则是浮点数

Python 2
Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。

为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。

许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。

为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。

新的Python程式建议使用Python 3.0版本的语法。

除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。

大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。

Python 3.0的变化主要在以下几个方面:

print 函数
print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python 2.6与Python 2.7里面,以下三种形式是等价的:

print "fish"
print ("fish") #注意print后面有个空格
print("fish") #print()不能带有任何其它参数
然而,Python 2.6实际已经支持新的print()语法:
字符编码: py3中默认字符编码是unicode;py2中默认字符编码是 ASCII,如果文件中出现了中文,需要在顶部加入coding声明HantecMarkets亨达返佣https://www.kaifx.cn/broker/h...

coding:utf8

让用户输入:py3中直接使用input(); py2中需要使用raw_input()
range和xrange:py3中的range == py2中的 xrange, 返回类似迭代器的东西,节省内存空间
语句变函数: py3中为print(), exec() 是一个方法,必须加上括号; py2中为print, exec
数据传输: py3中socket传过来的数据是byte类型 / hashlib包update也需要传bytes类型的数据; py2中则可以直接传入str, e.g

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
4年前
小白看过来,今天带你了解python2和python3的区别
看到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!搜索一下大家就会知道,python有两个主要的版本,python2和python3,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别。
Karen110 Karen110
4年前
Python4要来了?快来看看Python之父怎么说
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题!从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的发展,关于Python4的发布也逐渐的成为了大家讨论的热点问题。前段时间菜鸟哥逛某国外论坛的时候,看到了针对于Python4的问题。Python之父
CuterCorley CuterCorley
4年前
Python 字典 使用技巧
1.遍历字典的3种方式Python3中:pythond{'x':1,'y':2,'z':3}1.遍历keys:pythonforkind:print(k)print(dkey)或者pythonforkind.keys():print(k)print(dkey)2.遍历val
初学者学习python2还是python3?
如果你是一个初学者,或者你以前接触过其他的编程语言,你可能不知道,在开始学习python的时候都会遇到一个比较让人很头疼的问题:版本问题!!是学习python2还是学习python3?这是非常让人纠结的!搜索一下便会发现python3和python2是不兼容的,而且差异比较大,到底学习哪个版本呢?下面就来为大家分析一下:当初设计Python3
Stella981 Stella981
4年前
Python操作MySQL存储
在Python2中,连接MySQL的库大多是使用MySQLdb,但是此库的官方并不支持Python3,所以这里推荐使用的库是PyMySQL。本节中,我们就来讲解使用PyMySQL操作MySQL数据库的方法。1.准备工作在开始之前,请确保已经安装好了MySQL数据库并保证它能正常运行,而且需要安装好PyMy
Wesley13 Wesley13
4年前
Mysql(九):Python连接MySQL数据库之pymysql模块使用
Python3连接MySQL本文介绍Python3连接MySQL的第三方库PyMySQL的基本使用。PyMySQL介绍PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用mysqldb。Django中也可以使用PyMySQL连接MyS
Stella981 Stella981
4年前
Python3的简介
Python3简介Python3与Python2之间是不兼容的,而且其中的差异性比较大。其实Python是linux上最常用的软件之一,但是linux目前的版本大部分还是使用Python2的,而且,在linux上依赖Python2的程序更多一些,所以Python3要代替Python2成为主流还需要几年的时间。我建议:
Stella981 Stella981
4年前
Django【第12篇】:Django之中间件
自定义验证规则以及中间件简单介绍1、python2和python3中的区别!复制代码(https://oscimg.oschina.net/oscnet/47ed19d33ea2d94f58e1b2015c092ac5bfd.gif)对于python2内置的字符串类型有str和unicode
Stella981 Stella981
4年前
Python3环境通过JDBC访问非Kerberos环境的Hive
1.文档编写目的在前面Fayson介绍了在Python2的环境下《如何使用PythonImpyla客户端连接Hive和Impala》,本篇文章Fayson主要介绍在Python3的环境下使用Impyla访问非Kerberos环境下的Hive以及将获取到的结果集转换为Pandas的DataFrame。内容
Stella981 Stella981
4年前
Python3与Python2的差异
基于python3浅谈python3与python2的差异。由于现今主流Python3,但是之前用Python2做的项目,还得维护,所以作为python工作者,不免要了解其中差异,其中,Python2有ASCIIstr()类型,unicode()是单独的,不是byte类型。而Python3.X源码文件默认使用utf8编码,以及一个
Stella981 Stella981
4年前
Python3 新特性
原文链接: Python3新特性(https://my.oschina.net/ahaoboy/blog/1622034)系统文件路径处理库:pathlib  使用Python2的同学,应该都用过os.path这个库,来处理各种各样的路径问题,比如拼接文件路径的函数:os.path.join(),用Python3,你可以使用path
运维救火
运维救火
Lv1
每个百毒不侵的背后,都曾经无药可救过。
文章
5
粉丝
0
获赞
0