zoukankan      html  css  js  c++  java
  • Python 2和3的区别

    Python 3.x介绍的一些Python 2不兼容的关键字和特性可以通过在Python 2的内部__future__模块导入。

    基本点,range,新式类,mro,asyncio。

    0,字符串类型统一,只有str和bytes(字节序列)。Python2 的默认编码是 asscii(原因在于 Python这门语言诞生的时候还没出现 Unicode),3默认编码是 utf-8。外部IO 拿到的都是bytes。

    1,print,3统一加小括号,在3中是一个系统调用函数,2不加,在2中是一个声明,而不是一个函数

    2,不强制所有类型从int 到str或从 visa 到 str,如果比较不同类型会抛出报错信息

    3,整数相除,在Python 2中,3/2的结果是整数,在Python 3中,结果则是浮点数

    4,在3中,变量前面加 * 号表示接收溢出值,且位置没有限制,但一定要放在关键字参数或者**前面。

    5,异常处理,在 3中现在使用as作为关键词,且可以对异常做异常链处理,一层一层向外抛出

    6,在3中for循环不会再导致命名空间泄漏。比如for循环之后的值会赋值到名字相同的全局变量。

    7,Python2 中的 range 和 xrange 函数合并成了 range,在2中,range返回一个list,xrange返回一个iterator。3中全部返回可迭代对象。应用如2中for循环的复杂度指数型增加,3中线形增加。

    8,字典不再支持has_key方法,使用in方法。

    9,nonlocal,声明非局部变量,从嵌套关系中依次向外寻找,不会声明全局变量。

    10, yield from,将生成器重构为子生成器,通过委托生成器使调用方和子生成器建立双向的联系,依次接收子生成器的返回值。在协程中可以将所有IO抛给子生成器处理。并保存函数之间的调用状态。

    11,asyncio模块,非常强大的模块。使用新的协同特性和保存的生成器状态来进行异步IO。coroutine对象,只需要声明async 和 await即可。

    12,标准库的添加,faulthandler,Display (limited) tracebacks;ipaddress,处理ip地址;enum,枚举;Pathlib,不需要通过os模块使用path,而是直接使用pathlib模块导入path,语法更精简

    考虑,新的特性和语法有没有对现有开发模式产生足够积极作用。 性能有没有提高的足够多。迁移成本是不是可以接受。

  • 相关阅读:
    ubuntu下配置Apache
    ubuntu 下配置Web服务器
    ubuntu 笔记一
    域名解析
    C# Enum,Int,String的互相转换
    C# 得到本机局域网IP地址
    C# 连接 SQLServer 及操作
    C# OpenFileDialog 使用
    如何解决 IntelliJ Idea 编译 Java 项目时,找不到包或找不到符号的问题?
    阿里巴巴 MySQL 数据库之 SQL 语句规约 (三)
  • 原文地址:https://www.cnblogs.com/wang-kai-1994/p/10374976.html
Copyright © 2011-2022 走看看