关于python2与python3使用上的差异

主要对比版本:python27与python36

1. 关于copy()

1
2
values = [1,2,3]
values2 = values.copy()

python3中没问题,python2中报错:

image-20220105160555692

解决方法:改为:

1
2
values2 = list(values)
# 或 values2 = values[:]

2. Python2 不支持中文问题

创建test.py程序如下:

1
print("你好")

python3运行时,输出 你好,python2运行时,输出:

1
SyntaxError: Non-ASCII character '\xe4' in file e:/pycharmProject/ml_module/main5.py on line 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

解决方法:在python文件最开头加上:

1
# -*- coding: utf-8 -*-

3. 关于除法

1
2
3
4
print(2/3)

python3中:0.6666666666666666
pyhon2中:0

python2中的除法等价于python3中的//

解决方法:

法一:

1
2
3
4
5
6
>float(2)/3
0.6666666666666666

不能直接float()的,例如array等,可.astype(float)
float 应该是等价于 "float64"
int 应该是等价于 "int32"

法二:更简单的方法:

参考 Division in Python 2.7. and 3.3 - Stack Overflow

在python文件的最开头加上:

1
from __future__ import division

例:

image-20220105162421744

4. 关于在python3环境中保存,python2环境中读取文件

详见 读取与保存csv和txt文件

5. 关于python2与python3中可变参数的差异

详见 关于python2与python3中的可变参数