python2.7升级python3.6注意点(部分)

1.reload()

python2使用如下,防止中文出现乱码问题

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

python3下使用sys.setdefaultencoding('utf-8'),编译时报错,改为:(Python3字符串默认编码unicode, 所以sys.setdefaultencoding也不存在了)

在Python2.x中由于str和byte之间没有明显区别,经常要依赖于defaultencoding来做转换。
在python3中有了明确的str和byte类型区别,从一种类型转换成另一种类型要显式指定encoding。可以用以下方法代替:

import importlib,sys 
importlib.reload(sys)

2.在Python3.6下安装MySQL-python模块

在python2.7中,我们安装的是 MySqldb或这 MySQL-python,能够正却安装,但在python3中,由于 其使用的扩展 ConfigParser 已经改名为 configparser,所以在python3 不能正常安装了

使用mysqlclicent代替

pip install mysqlclient

3.print函数

Python3中print为一个函数,必须用括号括起来;Python2中print为class

4.异常处理except的不同:Exception 后需要用as

python 2.7:

try:
  mapping_file=request.FILES['mapping-file']
except Exception,e:
  print('upload file failed!')

python 3.6

try:
  mapping_file=request.FILES['mapping-file']
except Exception as e:
  print('upload file failed!')

5.通过import导入模块和包的区别

python2默认是按照相对路径导入模块和包,python3默认则是按照绝对路径导入,相对导入是用一个 '.' 来声明的

eg.

from .request_result_data import get_request_result_data

 

你可能感兴趣的:(python)