众所周知,Python3是Python2的升级改进版,既包含了Python2的绝大部分内容,同时又做出了一些不一样的改变。据说,Python2将于2020年左右不再免费更新维护,作为Python2的坚定支持者,是不是有一种被抛弃的感觉呢。所以,此时最好的选择就是在努力维护python2在心中的核心地位的同时,好好地扩展python3才是上上之策。不过呢,笔者在用过python3之后,发现其确实在很多方面提出了改进,更具人性化。好了,闲话少说吧。那么Python3与Python2到底有哪些不同之处呢? 1. raw_input与input 从键盘中输入内容时,python2用的是raw_input,而python3使用的是input(如下图所示) Python2: Python3: 2. print与print() 打印时python2使用的是print + 内容 而python3则使用的是print(内容) 3. /与//的区别 python2中 / 表示整除(取整数),// 也表示整除(取整数),也就是说,python2中/和//都表示整除(取整数) python3中 / 表示的是做除法运算(不一定为整数),而//表示的是整除(取整数) 因此,可以这样子理解,整除时,python2使用 / ,而python3使用 // 。这样子就不会乱了,个人理解哈 4. 不等运算符<>与!= python2中<>与!=都可以使用,都表示不相等的判断 而python3就不一样了,python3表示不相等的判断时只能用!= 5.编码问题 python2默认编码为ASCII,这就是为什么我们在编写代码出现中文时需要在第一行加上#coding=utf-8 python3默认编码为utf-8,因此python3不需要再出现中文时需要在第一行加上#coding=utf-8 6.与MySQL的交互 python2与MySQL进行交互时,需要安装MySQLdb 而python3与MySQL交互时,需要安装的是pymsql 此外,python2与MySQL进行交互时,数据库密码为passwd="密码" 而python3与pymysql进行交互时,数据库密码为password="密码" 这个坑我踩过2333,当初用Django做第一个项目时,用的是python3,结果在与数据库交互生成迁移文件时报了一大推错,足有一张A4纸那么大。还好我不是吓大的,可还是花了不少精力去发现这个问题。可能是当初学mysql时,与python交互时用的是python2有关。 7. urllib2与urrlib3 python2中urrlib2与urllib3都可以,爬虫时往往需要urllib与urllib2一起使用,因为urllib提供了urlencode() 而在python3中只能用urllib3,urllib2已经不能用了。爬虫时只需urllib3即可,因为python3默认编码为utf-8 8. ConfigParser.py与configparser.py python2中ConfigParser.py模块作用是使配置文件生效 python3中ConfigParser.py改为了configparser.py,作用不变 这个坑很容易踩2333,特别时用django做项目时,在python3 manage.py startapp 应用名创建应用时往往会报错,此时就需要看你的usr/lib/python3.x/目录下是ConfigParser.py还是configparser.py。 9. Django中导入文件 如在django项目下的某一个应用中views需要导入本应用中的models时 python2:直接导入 python3:from .models import * 10. 异常捕获 python2必须使用except....as..... 而python3没有此要求 11. 打开或创建文件 python2中可以使用open()或file() 而python3只能使用open() 12. 队列 python2中队列用的是Queue python3中队列用的则是queue 13. 多线程 python中使用的是thread模块 python3中改成了_thread或threading(推荐使用) 14.加密 md5加密中,Python2使用import md5或者import hashlib; 而Python3只能使用import hashlib,使用方法hashlib.md5()。 15.urllib和urllib2 python2爬虫一般用urllib2,而python3之后,urllib2已经退出江湖了,也就是python3以上版本之后,不再用urllib2这个包了。而取而代之的就是urllib了,爬虫时一般使用urllib包中的request方法 python2.7 python3.5 16.cookielib与http.cookiejar 在想要获取某网站在浏览器中的cookie值时,可以使用cookiejar方法,不过这个方法在python2与python3中的用法有点不一样。 python2——使用cookielib包,然后使用CookieJar()方法创建一个cookie实例对象来保存cookie值 python3——使用的是http.cookiejar包,然后使用CookieJar()方法创建一个cookie实例对象来保存cookie值 目前为止,遇到的比较常用的基本上就这些了。可能由于时间的缘故,有些想不起来或者还没有遇到的,欢迎补充! |
|
来自: IT菜鸟63svx2uw > 《技术教程》