当前位置: 首页 > news >正文

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

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


🧵 基本语法差异

1. 打印语法

  • Python2:print 是一个语句

    print "Hello, world"
    
  • Python3:print() 是一个函数

    print("Hello, world")
    

2. 整数除法

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

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

    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:

    try:pass
    except Exception, e:print e
    
  • Python3:

    try:pass
    except Exception as e:print(e)
    

7. 类的定义

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

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


🧪 其他重要差异

8. 字典方法的返回值

  • Python2:

    d = {'a': 1}
    print d.keys()   # 返回 list
    
  • Python3:

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

9. 编码声明

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

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


✅ 总结

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

❗ Python2 已停止官方支持

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


http://www.lqws.cn/news/136477.html

相关文章:

  • 解决com.jcraft.jsch.JSchException: Algorithm negotiation fail
  • MYSQL之表的内连和外连
  • Hadoop企业级高可用与自愈机制源码深度剖析
  • 《人性的弱点》核心总结
  • 录制mp4
  • RAG技术解析:实现高精度大语言模型知识增强
  • promethues上监控K3S中的pod的状态
  • [AI Claude] 软件测试2
  • 互斥锁与消息队列的架构哲学
  • 网络攻防技术十三:网络防火墙
  • docker的基本命令
  • (四)docker命令—容器管理命令
  • SOC-ESP32S3部分​​​​​​​:29-乐鑫组件库的使用
  • 6个月Python学习计划 Day 14 - 异常处理基础( 补充学习)
  • Kafka broker 写消息的过程
  • UE 材质基础第三天
  • 细说C语言将格式化输出到字符串的函数sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l
  • MP4文件声音与视频分离
  • 网络寻路--图论
  • C语言数据结构笔记3:Union联合体+结构体取8位Bool量
  • 嵌入式常见 CPU 架构
  • 传输层协议 UDP 介绍 -- UDP 协议格式,UDP 的特点,UDP 的缓冲区
  • 激光干涉仪:解锁协作机器人DD马达的精度密码
  • [Java 基础]类,面向对象的蓝图
  • ABP-Book Store Application中文讲解 - Part 9: Authors: User Interface
  • AWS中国区IAM相关凭证自行管理策略(只读CodeCommit版)
  • Linux容器篇、第一章docker命令总结表
  • C++入门基础
  • JavaScript基础:运算符
  • 本地IP配置