`

【转】python3.x 对 python2.x 语法变动

阅读更多

转过来,留着日后查看

 

【转自:】http://hi.baidu.com/autoitcn/blog/item/5f41973294b5fc4fac4b5f77.html

 

python 2.4 与 python 3.0 的比较

一、 print 从语句变为函数

   原:     print   1, 2+3

改为: print ( 1, 2+3 )

二、range 与 xrange

原 : range( 0, 4 )   结果 是 列表 [0,1,2,3 ]

改为:list( range(0,4) )

原 : xrange( 0, 4 )    适用于 for 循环的变量控制

改为:range(0,4)

三、字符串

原: 字符串以 8-bit 字符串存储

改为: 字符串以 16-bit Unicode 字符串存储

 

四、try except 语句的变化

原: try:

          ......

     except    Exception, e :

         ......

改为

    try:

          ......

     except    Exception as e :

         ......

五、打开文件

原: file( ..... )

    或 open(.....)

改为:

    只能用 open(.....)

六、从键盘录入一个字符串

原: raw_input( "提示信息" )

改为: input( "提示信息" )

七、bytes 数据类型

 

 

A bytes object is an immutable array. The items are 8-bit bytes, represented by integers in the range 0 <= x < 256.

bytes 可以看成是“字节数组”对象,每个元素是 8-bit 的字节,取值范围 0~255。

由于在 python 3.0中字符串以 unicode 编码存储,当写入二进制文件时,字符串无法直接写入(或读取),必须以某种方式的编码为字节序列后,方可写入。

(一)字符串编码(encode) 为 bytes

例:   s = "张三abc12"

       b = s.encode( 编码方式)

       # b 就是 bytes 类型的数据

      # 常用的编码方式为 : "uft-16"    , "utf-8", "gbk", "gb2312", "ascii" , "latin1" 等

      # 注 : 当字符串不能编码为指定的“编码方式”时,会引发异常

(二) bytes 解码(decode)为字符串

      s = "张三abc12"

       b = s.encode( "gbk")    # 字符串 s 编码为 gbk 格式的字节序列

       s1 = b.decode("gbk")   # 将字节序列 b以gbk格式 解码为字符串

       # 说明,当字节序列不能以指定的编码格式解码时会引发异常

(三)使用方法举例

#coding=gbk

f = open("c:\\1234.txt", "wb")
s = "张三李四abcd1234"
# -------------------------------
# 在 python2.4 中我们可以这样写:
# f.write( s )
# 但在 python 3.0中会引发异常
# -------------------------------
b = s.encode("gbk")
f.write( b )
f.close()

input("?")

读取该文件的例子:

#coding=gbk

f = open("c:\\1234.txt", "rb")
f.seek(0,2) #定位至文件尾
n = f.tell() #读取文件的字节数
f.seek(0,0) #重新定位至文件开始处
b = f.read( n )
# ------------------------------
# 在 python 2.4 中 b 是字符串类型
# 要 python 3.0 中 b 是 bytes 类型
# 因此需要按指定的编码方式确码
# ------------------------------
s = b.decode("gbk")
print ( s )
# ------------------------------
# 在 python 2.4 中 可以写作 print s 或 print ( s )
# 要 python 3.0 中 必须写作 print ( s )
# ------------------------------
f.close()
input("?")

运行后应显示:

张三李四abcd1234

 

 

 

(四) bytes序列,一但形成,其内容是不可变的

例:

s="ABCD"

b=s.encode("gbk")

print b[0]       # 显示   65

b[0] = 66   

# 执行该句,出现异常: 'bytes' object does not support item assignment

 

 

八、 chr( K ) 与 ord( c )

python 2.4.2以前

   chr( K )   将编码K 转为字符,K的范围是 0 ~ 255

   ord( c )   取单个字符的编码, 返回值的范围: 0 ~ 255

python 3.0

   chr( K )   将编码K 转为字符,K的范围是 0 ~ 65535

   ord( c )   取单个字符的编码, 返回值的范围: 0 ~ 65535

九、 除法运算符

python 2.4.2以前

   10/3      结果为 3     

python 3.0

   10 / 3 结果为 3.3333333333333335

   10 // 3 结果为 3

十、字节数组对象 --- 新增

(一) 初始化

    a = bytearray(   10 )

     # a 是一个由十个字节组成的数组,其每个元素是一个字节,类型借用 int

     # 此时,每个元素初始值为 0

(二) 字节数组 是可变的

    a = bytearray(   10 )

     a[0] = 25

     # 可以用赋值语句更改其元素,但所赋的值必须在 0 ~ 255 之间

(三)   字节数组的切片仍是字节数组

(四)   字符串转化为字节数组

     #coding=gbk

     s ="你好"

     b = s.encode( "gbk")     # 先将字符串按某种“GBK”编码方式转化为 bytes

     c = bytearray( b )          #再将 bytes 转化为 字节数组

     也可以写作

     c = bytearray( "你好", "gbk")

 

(五)   字节数组转化为字符串

      c = bytearray( 4 )

       c[0] = 65 ; c[1]=66; c[2]= 67; c[3]= 68

      s = c.decode( "gbk" )

       print ( s )

      # 应显示: ABCD           

 

(六) 字节数组可用于写入文本文件

#coding=gbk

f = open("c:\\1234.txt", "wb")
s = "张三李四abcd1234"
# -------------------------------
# 在 python2.4 中我们可以这样写:
# f.write( s )
# 但在 python 3.0中会引发异常
# -------------------------------
b = s.encode("gbk")

f.write( b )
c=bytearray( "王五","gbk")
f.write( c )
f.close()

input("?")

 

 

RookieDong的补充

1,“import  thread”问题,2.x中的模块thread在3.x中编程"_thread"(需要在前面加一个下划线).否则会出现“ImportError: No module named thread

分享到:
评论

相关推荐

    python2.x和python3.x的区别

    - **目的**:在Python 2.x中,为了兼容Python 3.x的新特性和语法变化,开发者可以利用内置的`__future__`模块提前引入这些新特性。 - **示例**:比如,要使Python 2.x的行为与Python 3.x一致,可以使用以下代码: `...

    Python进阶.pdf

    - 针对Python 2和3的差异,编写兼容的代码以确保在两个版本中都能正常运行。 20. **协程(Coroutines)**: - 协程是一种用户级别的并发机制,允许多个任务在单线程中交替执行。 - Python 3.5引入了`asyncio`库...

    Modern Python Cookbook.pdf

    这些内容包括但不限于Python基础语法、库的使用、以及如何将Python应用于数据处理、网络编程、自动化任务、测试、部署以及性能优化等多个方面。 书中明确指出了版权信息,强调了未经出版商事先书面许可,任何人不...

    python爬虫.docx

    1. **Python语言基础**:熟悉Python的基本语法,能够理解并编写简单的Python脚本。 2. **HTML基础知识**:掌握HTML的基本结构及常用标签,以便于解析网页内容。 #### 三、爬虫技术的学习路径 本文将按照以下路径...

    python官方3.4.0b2.amd64版本msi安装包

    9. **语法变动**:Python 3.4引入了一些新的语法特性,如`with`语句的改进,使得它可以用于更多的情况,以及`yield from`语句,用于简化生成器的代码。 安装`python-3.4.0b2.amd64.msi`这个MSI安装包,用户将获得...

    Python库 | six-1.3.0.tar.gz

    Python 2和Python 3之间存在显著的语法差异,尤其是在字符串处理、异常处理、内置函数等方面。six库提供了一套统一的接口,使得开发者在处理这些差异时无需过多关注具体使用的Python版本。例如,six提供了`six.u()`...

    python量化交易2.zip

    - **Python语法**:理解变量、数据类型、控制流、函数、类等基本概念是进行Python编程的前提。 - **NumPy**:用于处理数值型数据,提供高效的数组操作和矩阵运算。 - **Pandas**:强大的数据处理库,用于数据清洗...

    Python 3.0与2.0的用法区别.pdf

    3. 语法变动: - 消除了`&lt;&gt;`,统一使用`!=`表示不等于。 - `&lt;&gt;`操作符被`!=`替换。 - 删除了`print`语句,引入了`print()`函数,允许通过关键字参数控制输出。 - `exec`也从语句变为`exec()`函数。 - `as`和`...

    alibabaProduct_alibaba_python_Product_

    10. **自动化**:这个项目可能还涉及到了自动化流程,例如定时获取产品信息,监控价格变动等,这可能会用到Python的定时任务库如schedule或apScheduler。 通过这些知识点,我们可以构建一个从阿里巴巴获取产品信息...

    Python.Unix和Linux系统管理指南 源代码

    Python是一种强大的脚本语言,因其简洁的语法和丰富的库支持,被广泛用于Unix和Linux系统的自动化管理。通过Python,你可以编写脚本来自动化日常的维护任务,如备份、日志分析、系统监控等,提高效率和准确性。 2....

    Python库 | onegov.applications-2018.11.10-py3-none-any.whl

    在这个例子中,“py3”表示该库适用于Python 3.x版本,“none”意味着它不依赖特定的ABI(应用程序二进制接口),而“any”表示它可以用于任何平台。这种通用性使得 `onegov.applications-2018.11.10-py3-none-any....

    python运行操作指导.pdf

    通过这个例子,可以了解到Python语法的简洁性。 5. Python脚本文件:文档中提到了hello.py文件,这是用户编写的Python代码文件。在Python中,以.py为后缀的文件通常被视为Python脚本,可以直接运行。 6. Python...

    Python工程师面试作业.docx

    Python是一种强大的编程语言,广泛应用于Web开发、数据分析、人工智能等领域。...Python3.x对编码处理进行了改进,统一使用Unicode作为字符串的基础,通过`encode`和`decode`方法进行编码和解码操作。

    python库存管理系统.zip

    1. **Python 编程基础**:熟悉 Python 的语法、数据结构和控制流程。 2. **Tkinter 库**:了解 Tkinter 的组件、事件处理机制和布局管理。 3. **数据库操作**:可能使用 SQLite 或其他轻量级数据库来存储商品信息,...

    VBA for ArcGIS 10.X

    3. **ArcGIS Desktop API**:理解如何在Python中使用ArcGIS Desktop API(如ArcPy)是关键,这将帮助开发者创建新的工具和脚本,替代原有的VBA宏。 4. **代码迁移策略**:制定详细的迁移计划,逐个测试和转换VBA宏...

    能支持beautifulsoup的python版本

    4. **Python 2与Python 3的区别**:Python 2.7与Python 3.x之间存在显著差异,包括语法、内置函数和库的变动。比如print语句在Python 2中是语句而在Python 3中是函数,以及字符串处理的差异等。 5. **向后兼容性...

    股票预测,股票预测软件,Python源码.zip

    Python因其丰富的库和简洁的语法,成为了数据科学和金融分析的首选工具。 首先,让我们探讨一下股票市场的基本原理。股票价格受多种因素影响,包括公司业绩、宏观经济状况、市场情绪、政策变动等。预测股票价格通常...

    Python库 | canaryd-0.3.dev6-py2.py3-none-any.whl

    随着Python 2的退役,开发者越来越重视对Python 3的支持。"none-any"表示该库不依赖特定的平台或架构,可以在任何支持Python的系统上运行。 **总结** "canaryd-0.3.dev6-py2.py3-none-any.whl"是一个针对Python 2...

    gvim的python配置

    本篇文章将详细介绍如何配置GVim以优化Python编程体验,主要包括Python语法高亮、文档视图以及类视图等功能。 首先,让我们从基础开始。`_vimrc`文件是GVim的配置文件,它是Vim启动时读取的脚本,用于设定各种编辑...

    Dive Into Python 3, r916 (2010).pdf

    本书着重介绍了从 Python 2 升级到 Python 3 过程中的变化,特别强调了语法上的变动以及一些重要的概念更新。 - **1.1 A.K.A. "THE MINUS LEVEL"** - 本章节主要针对已经熟悉 Python 2 的程序员,并且读过原版...

Global site tag (gtag.js) - Google Analytics