Python:Python 3.x 的革新
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 可迭代; - 关键词加入
as、with、True、False、None; - 加入 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 的革新的更多相关文章
- python --- Python中的callable 函数
python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callabl ...
- Micro Python - Python for microcontrollers
Micro Python - Python for microcontrollers MicroPython
- 从Scratch到Python——python turtle 一种比pygame更加简洁的实现
从Scratch到Python--python turtle 一种比pygame更加简洁的实现 现在很多学校都开设了Scratch课程,学生可以利用Scratch创作丰富的作品,然而Scratch之后 ...
- 从Scratch到Python——Python生成二维码
# Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...
- [Python]Python 使用 for 循环的小例子
[Python]Python 使用 for 循环的小例子: In [7]: for i in range(5): ...: print "xxxx" ...: print &quo ...
- [python]python 遍历一个list 的小例子:
[python]python 遍历一个list 的小例子: mlist=["aaa","bbb","ccc"]for ss in enume ...
- [Python]Python日期格式和字符串格式相互转换
由字符串格式转化为日期格式的函数为: datetime.datetime.strptime() 由日期格式转化为字符串格式的函数为: datetime.datetime.strftime() # en ...
- [python]Python 字典(Dictionary) update()方法
update() 函数把字典dict2的键/值对更新到dict里.如果后面的键有重复的会覆盖前面的语法dict.update(dict2) dict = {'Name': 'Zara', 'Age': ...
- [python]python try异常处理机制
#python的try语句有两种风格 #一:种是处理异常(try/except/else) #二:种是无论是否发生异常都将执行最后的代码(try/finally) try/except/else风格 ...
- [Python] Python中的一些特殊函数
1. 过滤函数filter 定义:filter 函数的功能相当于过滤器.调用一个布尔函数bool_func来迭代遍历每个列表中的元素:返回一个使bool_func返回值为true的元素的序列. a=[ ...
随机推荐
- Learning Scrapy笔记(五)- Scrapy登录网站
摘要:介绍了使用Scrapy登录简单网站的流程,不涉及验证码破解 简单登录 很多时候,你都会发现你需要爬取数据的网站都有一个登录机制,大多数情况下,都要求你输入正确的用户名和密码.现在就模拟这种情况, ...
- LPHW-积累-ex1-6
Learn Python The Hard Way ex0 介绍了各个操作系统下python的安装:强调了初学者最好使用简单的编辑器,不要使用IDE环境 ex1 使用 print 输出简单的字符串 ...
- 远程连接数据库(通过pgAdmin)
1.编辑/var/lib/pgsql/data/pg_hba.conf,增加语句 host all all 192.168.105.225/36 trust 让数据库接受网络 192.168.105 ...
- Telerik XML 数据源绑定的问题
Telerik GridView 默认的 XElement 数据源的直接绑定,会导致内置的sort, filter ,group等功能无法使用. 原因在于Telerik GridView的那些功能是根 ...
- SQL1092N The requested command or operation failed because the user ID does not have the authority to perform the requested command or operation.
1.前一天安装号db2后,做了如下处理: ************************************************************ 修改 /etc/sudoers 文件 ...
- wpa_supplicant软件架构分析
wpa_supplicant软件架构分析 1. 启动命令 wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下: wpa_supplicant /system/bi ...
- AngularJS与RequireJS集成方案
关于angularjs.requirejs的基础知识请自行学习 一.简单事例的项目目录如下: -index.html -scripts文件夹 --controller文件夹 --- mianContr ...
- (转)android Fragments详解三:实现Fragment的界面
为fragment添加用户界面 fragment一般作为activity的用户界面的一部分,把它自己的layout嵌入到activity的layout中. 一个 要为fragment提供layo ...
- Entity Framework 泛型使用
因为增删改查是我们常用到的方法,我们不可能每个数据模型都去完成增删改查,这样的办法太笨拙了.我们可以写个父类(包含增删改查),然后让所有的数据模型类继承该父类.那就要求我们的父类必须使用泛型来实现. ...
- Ubuntu14.04安装配置ndnSIM
Ubuntu14.04安装配置ndnSIM 预环境 Ubuntu14.04官方系统 请先使用sudo apt-get update更新一下源列表 安装步骤 安装boost-lib sudo apt-g ...