Python学习(6) ----- Python2和Python3的区别

Python2 和 Python3 是两个主要版本的 Python 编程语言,它们之间有许多重要的区别。Python3 是对 Python2 的一次重大升级,不完全兼容旧版本。以下是它们的主要区别:


🧵 基本语法差异

1. 打印语法

  • Python2:print 是一个语句

    python 复制代码
    print "Hello, world"
  • Python3:print() 是一个函数

    python 复制代码
    print("Hello, world")

2. 整数除法

  • Python2:两个整数相除默认是整数除法

    python 复制代码
    print 5 / 2    # 输出 2
  • Python3:两个整数相除默认是浮点除法

    python 复制代码
    print(5 / 2)   # 输出 2.5

Python2 中想要浮点除法需使用 from __future__ import division。


3. Unicode 处理

  • Python2:字符串默认是 ASCII 编码,str 类型是字节串,unicode 类型才是 Unicode。
  • Python3:字符串默认是 Unicode,str 类型是 Unicode,bytes 类型是字节串。

📦 标准库和内建函数

4. range() 和 xrange()

  • Python2:

    • range() 返回列表
    • xrange() 返回生成器(更节省内存)
  • Python3:只有 range(),行为类似 Python2 的 xrange()


5. input() 函数

  • Python2:input() 相当于 eval(raw_input()),不安全;推荐用 raw_input()
  • Python3:input() 相当于 Python2 的 raw_input(),始终返回字符串

🔧 语言特性

6. 异常语法

  • Python2:

    python 复制代码
    try:
        pass
    except Exception, e:
        print e
  • Python3:

    python 复制代码
    try:
        pass
    except Exception as e:
        print(e)

7. 类的定义

  • Python2:有旧式类和新式类(需继承 object)

    python 复制代码
    class MyClass:     # 旧式类
        pass
    class MyClass(object):  # 新式类
        pass
  • Python3:所有类都是新式类,统一继承自 object


🧪 其他重要差异

8. 字典方法的返回值

  • Python2:

    python 复制代码
    d = {'a': 1}
    print d.keys()   # 返回 list
  • Python3:

    python 复制代码
    d = {'a': 1}
    print(d.keys())  # 返回 dict_keys 对象(可迭代视图)

9. 编码声明

  • Python2 源码需声明编码(默认 ASCII):

    python 复制代码
    # -*- coding: utf-8 -*-
  • Python3 默认 UTF-8,可以不写编码声明(推荐保留)


✅ 总结

特性 Python2 Python3
打印语法 print 语句 print() 函数
除法行为 整除(除非引入 future) 浮点除法
字符串默认类型 ASCII (str) Unicode (str)
range() 列表 可迭代对象(生成器)
input() eval(raw_input()) 字符串
类定义 有旧式和新式类 统一为新式类
异常写法 except Exception, e except Exception as e

❗ Python2 已停止官方支持

自 2020 年 1 月 1 日 起,Python2 已停止维护,不再接收安全更新或 bug 修复。新项目建议全面使用 Python3。


相关推荐
水云桐程序员7 小时前
从零开发软件的步骤,软件开发从零到完成应该怎么做?
笔记·学习·软件构建·个人开发
David猪大卫7 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
叼烟扛炮8 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
xiaoye-duck9 小时前
《C++ 项目:手写大模型接入 SDK》Gemini接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
❁满城风絮*9 小时前
Claude Code 学习总结
python·agent·claude
nice_lcj52011 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
维克兜率天12 小时前
【维克】复合型CTA:趋势+套利的双轮驱动
python·学习方法
伞伞悦读12 小时前
【第76期】两张3行表左连接变5行:主键、validate与未匹配排查完整教程
人工智能·python
码农小河6612 小时前
基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
java·开发语言·mysql
用户83562907805112 小时前
使用 Python 在 Excel 中添加和自定义迷你图
后端·python