众所周知,Python3是Python2的升级改进版,既包含了Python2的绝大部分内容,同时又做出了一些不一样的改变。据说,Python2将于2020年左右不再免费更新维护,作为Python2的坚定支持者,是不是有一种被抛弃的感觉呢。所以,此时最好的选择就是在努力维护python2在心中的核心地位的同时,好好地扩展python3才是上上之策。不过呢,笔者在用过python3之后,发现其确实在很多方面提出了改进,更具人性化。好了,闲话少说吧。那么Python3与Python2到底有哪些不同之处呢?

1. raw_input与input

从键盘中输入内容时,python2用的是raw_input,而python3使用的是input(如下图所示)

Python2:

2和3的super区别 python python2和python3的区别大吗_2和3的super区别 python

Python3:

2和3的super区别 python python2和python3的区别大吗_Python2与Python3的不同之处_02

2. print与print()

打印时python2使用的是print + 内容

2和3的super区别 python python2和python3的区别大吗_2和3的super区别 python_03

而python3则使用的是print(内容)

2和3的super区别 python python2和python3的区别大吗_python2_04

3. /与//的区别

python2中 / 表示整除(取整数),// 也表示整除(取整数),也就是说,python2中/和//都表示整除(取整数)

2和3的super区别 python python2和python3的区别大吗_2和3的super区别 python_05

python3中 / 表示的是做除法运算(不一定为整数),而//表示的是整除(取整数)

2和3的super区别 python python2和python3的区别大吗_Python2与Python3的不同之处_06

因此,可以这样子理解,整除时,python2使用 / ,而python3使用 // 。这样子就不会乱了,个人理解哈

4. 不等运算符<>与!=

python2中<>与!=都可以使用,都表示不相等的判断

2和3的super区别 python python2和python3的区别大吗_python2_07

而python3就不一样了,python3表示不相等的判断时只能用!=

2和3的super区别 python python2和python3的区别大吗_python3_08

5.编码问题

python2默认编码为ASCII,这就是为什么我们在编写代码出现中文时需要在第一行加上#coding=utf-8

2和3的super区别 python python2和python3的区别大吗_python2_09

python3默认编码为utf-8,因此python3不需要再出现中文时需要在第一行加上#coding=utf-8

2和3的super区别 python python2和python3的区别大吗_python3_10

6.与MySQL的交互

python2与MySQL进行交互时,需要安装MySQLdb

2和3的super区别 python python2和python3的区别大吗_2和3的super区别 python_11

而python3与MySQL交互时,需要安装的是pymsql

2和3的super区别 python python2和python3的区别大吗_Python2与Python3的差别_12

此外,python2与MySQL进行交互时,数据库密码为passwd="密码"

而python3与pymysql进行交互时,数据库密码为password="密码"

这个坑我踩过2333,当初用Django做第一个项目时,用的是python3,结果在与数据库交互生成迁移文件时报了一大推错,足有一张A4纸那么大。还好我不是吓大的,可还是花了不少精力去发现这个问题。可能是当初学mysql时,与python交互时用的是python2有关。

7. urllib2与urrlib3

python2中urrlib2与urllib3都可以,爬虫时往往需要urllib与urllib2一起使用,因为urllib提供了urlencode()

2和3的super区别 python python2和python3的区别大吗_2和3的super区别 python_13

而在python3中只能用urllib3,urllib2已经不能用了。爬虫时只需urllib3即可,因为python3默认编码为utf-8

2和3的super区别 python python2和python3的区别大吗_python2_14

8. ConfigParser.py与configparser.py

python2中ConfigParser.py模块作用是使配置文件生效

2和3的super区别 python python2和python3的区别大吗_python2_15

python3中ConfigParser.py改为了configparser.py,作用不变

2和3的super区别 python python2和python3的区别大吗_Python2与Python3的不同之处_16

这个坑很容易踩2333,特别时用django做项目时,在python3 manage.py startapp 应用名创建应用时往往会报错,此时就需要看你的usr/lib/python3.x/目录下是ConfigParser.py还是configparser.py。

9. Django中导入文件

如在django项目下的某一个应用中views需要导入本应用中的models时

python2:直接导入

2和3的super区别 python python2和python3的区别大吗_2和3的super区别 python_17

python3:from .models import *

2和3的super区别 python python2和python3的区别大吗_python3_18

10. 异常捕获

python2必须使用except....as.....

2和3的super区别 python python2和python3的区别大吗_Python2与Python3的差别_19

而python3没有此要求

2和3的super区别 python python2和python3的区别大吗_Python2与Python3的不同之处_20

11. 打开或创建文件

python2中可以使用open()或file()

2和3的super区别 python python2和python3的区别大吗_python3_21

而python3只能使用open()

2和3的super区别 python python2和python3的区别大吗_Python2与Python3的差别_22

12. 队列

python2中队列用的是Queue

2和3的super区别 python python2和python3的区别大吗_python2_23

python3中队列用的则是queue

2和3的super区别 python python2和python3的区别大吗_python3_24

13. 多线程

python中使用的是thread模块

2和3的super区别 python python2和python3的区别大吗_2和3的super区别 python_25

python3中改成了_thread或threading(推荐使用)

2和3的super区别 python python2和python3的区别大吗_2和3的super区别 python_26

14.加密

md5加密中,Python2使用import md5或者import hashlib;

2和3的super区别 python python2和python3的区别大吗_python2_27

而Python3只能使用import hashlib,使用方法hashlib.md5()。

2和3的super区别 python python2和python3的区别大吗_python2_28

15.urllib和urllib2

python2爬虫一般用urllib2,而python3之后,urllib2已经退出江湖了,也就是python3以上版本之后,不再用urllib2这个包了。而取而代之的就是urllib了,爬虫时一般使用urllib包中的request方法

python2.7

2和3的super区别 python python2和python3的区别大吗_python3_29

python3.5

2和3的super区别 python python2和python3的区别大吗_python2_30

16.cookielib与http.cookiejar

在想要获取某网站在浏览器中的cookie值时,可以使用cookiejar方法,不过这个方法在python2与python3中的用法有点不一样。

python2——使用cookielib包,然后使用CookieJar()方法创建一个cookie实例对象来保存cookie值

2和3的super区别 python python2和python3的区别大吗_2和3的super区别 python_31

python3——使用的是http.cookiejar包,然后使用CookieJar()方法创建一个cookie实例对象来保存cookie值

2和3的super区别 python python2和python3的区别大吗_Python2与Python3的差别_32

目前为止,遇到的比较常用的基本上就这些了。可能由于时间的缘故,有些想不起来或者还没有遇到的,欢迎补充!