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

Python 2 和 Python 3的差异

Python 2 和 Python 3 之间有许多差异,Python 3 是 Python 语言的更新版本,目的是解决 Python 2 中的一些设计缺陷,并引入更现代的编程方式。以下是 Python 2 和 Python 3 之间的一些主要区别:

文章目录

      • 1. `print` 语句
      • 2. 整除行为
      • 3. Unicode 字符串处理
      • 4. `range()` 函数
      • 5. `xrange()` 的移除
      • 6. 异常处理语法
      • 7. `input()` 函数
      • 8. 字典的 `items()`、`keys()` 和 `values()`
      • 9. 函数的返回值
      • 10. 标准库的变化
      • 总结:

1. print 语句

  • Python 2print 是一个语句,可以不使用括号。
  • Python 3print 是一个函数,必须使用括号。

示例:

  • Python 2:
    print "Hello, World!"  # 无括号
    
  • Python 3:
    print("Hello, World!")  # 使用括号
    

2. 整除行为

  • Python 2/ 操作符进行整数除法时,如果两个操作数是整数,它会进行 向下取整 的除法。
  • Python 3/ 始终执行浮点数除法,即使是两个整数。

示例:

  • Python 2:
    print 3 / 2  # 输出 1
    
  • Python 3:
    print(3 / 2)  # 输出 1.5
    
  • 在 Python 2 中,使用 from __future__ import division 可以启用 Python 3 的除法行为。

3. Unicode 字符串处理

  • Python 2:字符串默认是 ASCII 编码,处理 Unicode 字符串需要使用 u"..."
  • Python 3:所有字符串默认都是 Unicode,使用更加便捷。

示例:

  • Python 2:
    u"你好,世界"  # 必须显式加 `u`
    
  • Python 3:
    "你好,世界"  # 默认 Unicode,无需 `u`
    

4. range() 函数

  • Python 2range() 返回的是一个列表,生成所有数字并存储在内存中。
  • Python 3range() 返回的是一个生成器对象,使用时才会生成数字,节省内存。

示例:

  • Python 2:
    print range(5)  # 输出 [0, 1, 2, 3, 4]
    
  • Python 3:
    print(range(5))  # 输出 range(0, 5)
    list(range(5))   # 输出 [0, 1, 2, 3, 4]
    

5. xrange() 的移除

  • Python 2:有 range()xrange() 两个函数,xrange() 返回生成器,节省内存。
  • Python 3xrange() 被移除,range() 具有与 xrange() 相同的功能。

6. 异常处理语法

  • Python 2:异常处理使用 as 关键字时,语法较为宽松,可以使用逗号。
  • Python 3:异常处理必须使用 as 关键字。

示例:

  • Python 2:
    try:raise ValueError("error")
    except ValueError, e:  # 使用逗号print e
    
  • Python 3:
    try:raise ValueError("error")
    except ValueError as e:  # 必须使用 `as`print(e)
    

7. input() 函数

  • Python 2input() 会将用户输入的内容作为代码执行,存在安全隐患。raw_input() 用来获取用户的字符串输入。
  • Python 3input() 返回的是字符串,raw_input() 被移除。

示例:

  • Python 2:
    name = raw_input("Enter your name: ")  # 使用 raw_input 获取字符串
    
  • Python 3:
    name = input("Enter your name: ")  # input 返回字符串
    

8. 字典的 items()keys()values()

  • Python 2items()keys()values() 返回的是列表。
  • Python 3:它们返回的是视图对象,可以使用 list() 来转换为列表。

示例:

  • Python 2:
    my_dict = {'a': 1, 'b': 2}
    print my_dict.items()  # 输出 [('a', 1), ('b', 2)]
    
  • Python 3:
    my_dict = {'a': 1, 'b': 2}
    print(my_dict.items())  # 输出 dict_items([('a', 1), ('b', 2)])
    print(list(my_dict.items()))  # 输出 [('a', 1), ('b', 2)]
    

9. 函数的返回值

  • Python 2:如果函数没有显式的 return 语句,默认返回 None
  • Python 3:与 Python 2 一样,但函数的行为在特定情况下更加严格。

10. 标准库的变化

  • Python 3:很多标准库的模块有了重命名或调整,如 ConfigParser 模块在 Python 3 中改名为 configparserQueue 改为 queue 等。

总结:

Python 3 引入了许多改进,使得代码更加简洁、统一和现代化。Python 2 虽然仍被一些旧系统使用,但官方已经停止支持,因此新项目应该使用 Python 3。

http://www.lryc.cn/news/445251.html

相关文章:

  • Leetcode 第 139 场双周赛题解
  • spring 注解 - @NotEmpty - 确保被注解的字段不为空,而且也不是空白(即不是空字符串、不是只包含空格的字符串)
  • 深入理解华为仓颉语言的数值类型
  • WPF 的TreeView的TreeViewItem下动态生成TreeViewItem
  • 使用Go语言的互斥锁(Mutex)解决并发问题
  • Android平台Unity3D下如何同时播放多路RTMP|RTSP流?
  • 网络:TCP协议-报头字段
  • JAVA基础:HashMap底层数组容量控制,TreeMap底层存取机制,位运算符,原码反码补码
  • 【Redis】Redis 缓存设计:抗住百万并发量的最佳实践
  • 【hot100-java】【缺失的第一个正数】
  • 独立站新手教程转化篇:如何做好移动端优化?
  • Mybatis Plus分页查询返回total为0问题
  • VulnHub-Narak靶机笔记
  • 查看和升级pytorch到指定版本
  • Maya---机械模型制作
  • 请不要在TS中使用Function类型
  • 关于UVM仿真error数量达到指定值就退出仿真的设置
  • chatGPT问答知识合集【二】
  • 不靠学历,不拼年资,怎么才能月入2W?
  • 【软考】多核CPU
  • 制作炫酷个人网页:用 HTML 和 CSS3 展现你的风格
  • WinCC中归档数据片段的时间和尺寸设置
  • kubernetes网络(二)之bird实现节点间BGP互联的实验
  • 动态语言? 静态语言? ------区别何在?java,js,c,c++,python分给是静态or动态语言?
  • 计算机网络17——IM聊天系统——客户端核心处理类框架搭建
  • C/C++面试题
  • [3]Opengl ES着色器
  • Spring Boot 中实现任务后台处理的几种常见方式
  • 部署--UmiJS
  • python自学笔记