Python 2 和 Python 3的区别
一、维护及版本更新不同
官方通知python2 2020开始已不再维护,python3的版本还在不断迭代更新 。
因为python2官方不再维护且python3的广泛使用,很多新的算法包、AI包等其他功能模块包都是基于python3开发的,python2基本不兼容。
二、两个版本所使用的编码不同
python2使用的是ASCII编码,如果想要支持中文的话,需要更改一下字符集,添加coding:utf-8 ;
python3使用的是utf-8编码,是支持中文的。
三、语法上发生变化
1、不相等操作符"<>"被 Python3 废弃,统一使用"!=";
2、整型除法运算‘/’python2返回的是整数,python3整型除法返回的是浮点数,python3中除法返回整数使用//(整除);
3、python3中加入了nonlocal声明。使用noclocal x可以声明该函数上部层级中的变量;
4、python3中去除了print语句,使用print()函数替代使用。还有 exec语句也被exec()函数替代;
5、python3中输入函数改变了(读取键盘输入的方法),其实Python2中raw_input()和input( ),两个函数都存在,只不过input()函数只对数字有用;
Python3中对两个函数进行了整合,把raw_input()去掉了,增强input()函数的功能,使其将所有输入当作字符串来处理,并返回字符串类型;
6、python3中加入了关键词as 和with ;
7、python3中增加了f' {} ',格式化,在python2中是没有这个功能的;
str = 'Hello_Python'
print(f'输出得字符串是:{str}')
四、数据类型的使用上发生变化
1、python3去除了长整型long类型,只保留整型int
2、python3中str表示字符串序列,byte表示字节序列;python2中Unicode表示字符串序列,str表示字节序列;
3、字典类型下的方法.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃了has_key()用 in替代了它的使用;
五、异常的捕捉发生变化
1、在Python3中,只有继承自BaseException的对象才可以被抛出,换句话说异常类全部继承自BaseException,python2中各类型对象均可以抛出, 并且异常StandardError 也被Python3废弃,统一使用Exception;
2、捕获异常的语法改变,用 raise Exception(args)代替 raise Exception, args语法,并且引入了as关键字来标识异常实例;
六、python3引入了抽象基类
python3中引入了Abstraact Base Classes,ABCs抽象基类,并且也因此增加了@abstractmethod和 @abstractproperty两个装饰器,对于编写抽象方法更加方便。
七、其它变化
1、xrange() 改为range(),如果想用range()创建一个list,需要进行强类型转换。比如:list(range(10));
2、序列化模块python3中把python2中的cpickle移除,换成pickle模块使用;
3、zip()、map()和filter()都返回迭代器。而apply()、 callable()、coerce()、 execfile()、reduce()和reload()函数都被去除了。python2中的callable(func)函数在python3中可以使用hasattr(func, '__call__');python2中reduce() 在python3中使用functools模块包中的reduce();
4、比较的返回不同,如果x < y的不能比较,抛出TypeError异常。python2版本是返回伪随机布尔值的;
5、file类在pytho3中被废弃,并且python3中只能使用open(....)去打开文件;
搭建 Python 编程环境
1、安装Python
下载Python安装程序地址:http://python.org/downloads/
下载Python 3的按钮,根据你的系统自动下载正确的安装程序。下载安装程序后,运行它。
安装时选中复选框Add Python toPATH 能让你能够更轻松地配置系统。
2、从终端运行 Python 程序
在命令窗口中,进入运行程序hello_world.py所在的目录,执行命令:python hello_world.py
Python 命令行参数:
选项 | 描述 |
---|---|
-d | 在解析时显示调试信息 |
-O | 生成优化代码 ( .pyo 文件 ) |
-S | 启动时不引入查找Python路径的位置 |
-V | 输出Python版本号 |
-X | 从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时。 |
-c cmd | 执行 Python 脚本,并将运行结果作为 cmd 字符串。 |
file | 在给定的python文件执行python脚本。 |
3、Python 环境变量
变量名 | 描述 |
---|---|
PYTHONPATH | PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。 |
PYTHONSTARTUP | Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的文件中的代码。 |
PYTHONCASEOK | 加入PYTHONCASEOK的环境变量, 就会使python导入模块的时候不区分大小写. |
PYTHONHOME | 另一种模块搜索路径。它通常内嵌于的PYTHONSTARTUP或PYTHONPATH目录中,使得两个模块库更容易切换。 |
4、Python VScode 配置
VSCode 完整安装教程参考:VScode 教程 | 菜鸟教程
安装 VS Code Python 扩展:
右击文件,选择"在终端中运行 Python 文件":
3、运行 hello_world.py 时发生的情况
运行文件hello_world.py时,末尾的.py指出这是一个Python程序,因此编辑器将使用Python解释器来运行它。Python解释器读取整个程序,确定其中每个单词的含义。例如,看到单词 print时,解释器就会将括号中的内容打印到屏幕,而不会管括号中的内容是什么。