Python 3.x 版本在设计时为了向最好的语言前进,没有考虑向下兼容,许多针对早期 Python 版本设计的程序都无法正常运行。本文简单介绍了 Python 3.x 版本较之 2.x 版本语法上的一些变化。

一、文件编码

默认源文件编码从 ASCII 变为 UTF-8,从而支持非 ASCII 字符标识符,这使得以下代码合法:

中国 = 'china'
print(中国)

二、函数

  • 去除 print 语句,加入 print() 函数实现相同的功能;
  • exec 语句也已改为 exec() 函数;
  • 删除了 raw_input(),统一使用 input()
  • xrange() 改名为 range(),要想使用 range() 获得一个 list,必须显式调用:list(range(10))
  • 函数 zip()map()filter() 将返回迭代器 ;
  • 去除了 apply()callable()coerce()execfile()reload() 函数;
  • reduce() 移动到了 functools 模块;
  • 添加 repr() 函数实现 2.x 版本中反引号的功能;
  • 修改了 oct() 函数,增加了 bin() 函数;
  • 元组参数解包使用方法变为:def func(*z, **p): pass
  • dict 的 .keys().items().values() 方法返回迭代器,iterkeys()dict.has_key() 被废弃,可用 in 替代;

1、print 函数语法区别

print("行末不换行", end=" ")
print >>sys.stderr, "fatal error" # 2.x 流转向
print("fatal error", file=sys.stderr) # 3.x 流转向

2、字符串格式化变化

>>> "I love {0}, {1}, and {param}".format("eggs", "bacon", param="sausage")
'I love eggs, bacon, and sausage'

三、数学运算

  • 除法成为了真正的除法,也即 5/2 结果为 2.5;
  • 取整的除法使用 //,也即 5//2 结果为 2;
  • 不等号只能用 !=
  • 如果 x < y 不能比较,抛出 TypeError 异常而非返回伪随机布尔值;

四、数据类型

  • 现在字符串只有 str 一种类型,但与 2.x 版本的 unicode 基本一致;
  • 去除了 long 类型,保留整型 int——实际相当于 2.x 版本的 long 类型;
  • 新增 bytes 类型。

五、其它细节

  • 扩展的可迭代解包:a, b, *rest = seq*rest, a = seq,只要 rest 为 list 并且 seq 可迭代;
  • 关键词加入 aswithTrueFalseNone
  • 加入 nonlocal 语句。使用 noclocal x 可以直接指派外部(非全局)变量。

六、面向对象

  • 引入抽象基类(Abstraact Base Classes,ABCs)并增加了 @abstractmethod@abstractproperty 两个 decorator 使抽象方法(属性)编写更加方便;
  • 废弃了 file 类;
  • 迭代器的 next() 方法改名为 __next__(),并增加内置函数 next(),用以调用迭代器的 __next__() 方法 ;

七、异常

  • 抛出异常:使用 raise Exception(args) 而非 raise Exception, args
  • 捕获异常:使用 except Exception as identifier 而非 except Exception, identifier

八、模块变动

  • 移除了cPickle、imageop、audiodev、Bastion、bsddb185、exceptions、linuxaudiodev、md5、MimeWriter、mimify、popen2、rexec、sets、sha、stringold、strop、sunaudiodev、timing、xmllib、bsddb 以及 new 模块。
  • 模块名称变化:ConfigParser → configparser、Tkinter → tkinter 、ttk → tkinter.ttk 、tkMessageBox → tkinter.messagebox、 tkColorChooser → tkinter.colorchooser、 tkFileDialog → tkinter.filedialog、 tkCommonDialog → tkinter.commondialog、 tkSimpleDialog → tkinter.simpledialog、 tkFont → tkinter.font、

    Tkdnd → tkinter.dnd、 ScrolledText → tkinter.scrolledtext 以及 Tix → tkinter.tix。
  • 更多变化请参阅:The Python 3.4 Standard Library

Python:Python 3.x 的革新的更多相关文章

  1. python --- Python中的callable 函数

    python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callabl ...

  2. Micro Python - Python for microcontrollers

    Micro Python - Python for microcontrollers MicroPython

  3. 从Scratch到Python——python turtle 一种比pygame更加简洁的实现

    从Scratch到Python--python turtle 一种比pygame更加简洁的实现 现在很多学校都开设了Scratch课程,学生可以利用Scratch创作丰富的作品,然而Scratch之后 ...

  4. 从Scratch到Python——Python生成二维码

    # Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...

  5. [Python]Python 使用 for 循环的小例子

    [Python]Python 使用 for 循环的小例子: In [7]: for i in range(5): ...: print "xxxx" ...: print &quo ...

  6. [python]python 遍历一个list 的小例子:

    [python]python 遍历一个list 的小例子: mlist=["aaa","bbb","ccc"]for ss in enume ...

  7. [Python]Python日期格式和字符串格式相互转换

    由字符串格式转化为日期格式的函数为: datetime.datetime.strptime() 由日期格式转化为字符串格式的函数为: datetime.datetime.strftime() # en ...

  8. [python]Python 字典(Dictionary) update()方法

    update() 函数把字典dict2的键/值对更新到dict里.如果后面的键有重复的会覆盖前面的语法dict.update(dict2) dict = {'Name': 'Zara', 'Age': ...

  9. [python]python try异常处理机制

    #python的try语句有两种风格 #一:种是处理异常(try/except/else) #二:种是无论是否发生异常都将执行最后的代码(try/finally) try/except/else风格 ...

  10. [Python] Python中的一些特殊函数

    1. 过滤函数filter 定义:filter 函数的功能相当于过滤器.调用一个布尔函数bool_func来迭代遍历每个列表中的元素:返回一个使bool_func返回值为true的元素的序列. a=[ ...

随机推荐

  1. DevExpress 中 WaitForm 使用

    第一步: 在程序中拖入: splashScreenManager1 控件 在需要处理的地方 使用以下语句来打开 WaitForm窗体(当然需要在 splashScreenManager1控件中绑定一个 ...

  2. 扯一扯前端css的整体架构设计:(2)base基础类的那些事儿

    周一下午在实验室写了第一篇博文,有几个人捧场,那咱就得接着下去啊.然后我觉得现在写的内容更多的偏向于谈一下我对于前端css架构的理解和前端经验的一个小总结,所以就把标题里原来的[项目总结]给删掉了.但 ...

  3. ED/EP系列2《文件结构》

    电子存折/电子钱包应用是为持卡人进行金融交易而设计的一种应用.对于一张金融 IC 卡来说,它可以同时支持电子存折和电子钱包两种应用,也可以只支持其中的一种.卡片上两种应用的存在情况可以由应用类型标识( ...

  4. React Native相关

    安装相关工具参考(视频):http://ninghao.net/course/3001?a=26 学习参考:http://reactnative.cn/ 学习参考:http://www.ruanyif ...

  5. 如何给ActiveX控件添加“事件”“属性”“标准事件”“自定义事件”等一些相关操作

    上一篇小编带大家熟悉了一下ActiveX的建立以及相关的概念,(http://blog.csdn.net/u014028070/article/details/38424611) 本文介绍下如何给控件 ...

  6. win7 系统如何设置快速启动栏

    a.在任务栏上右键 -> 工具栏 -> 新建工具栏 -> 跳出选择文件夹对话框,在文件夹里面(光标山洞处)输入这个路径,然后按回车: %userprofile%\AppData\Ro ...

  7. 立即执行函数(IIFE)的理解与运用

    作为JavaScript的常用语法,立即执行函数IIFE(Immediately-Invoked Function Expression)是值得我们认真去学习探究的. 一.创建函数的两种方式 我们先从 ...

  8. C6011 正在取消对 null 指针的引用

  9. C++中的set和java的hashset有何区别?

    以前对C++的STL容器烂熟于心,两年没碰过C++了,现在已经很生疏了.工作原因转战java,对java的容器不甚了解,特别是每看到一种容器,不由自主地拿起和C++对比.C++中的set和java的h ...

  10. css3 forwards、backwards、both

    animation-fill-mode 属性规定动画在播放之前或之后,其动画效果是否可见. none 不改变默认行为. forwards 当动画完成后,保持最后一个属性值(在最后一个关键帧中定义). ...