- 浏览: 13731818 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
这篇文章主要介绍了相比于python
2.6,python3.0的新特性。更详细的介绍请参见python3.0的文档。
Common Stumbling Blocks
本段简单的列出容易使人出错的变动。
* print
语句被print()函数
取代了,可以使用关键字参数
来替代老的print特殊语法。例如:
1. Old: print “The answer is”, 2*2
2. New: print(”The answer is”, 2*2)
3. Old: print x, # 使用逗号结尾禁止换行
4. New: print(x, end=” “) # 使用空格代替换行
5. Old: print # 输出
新行
6. New: print() # 输出新行
7. Old: print >>sys.stderr, “fatal error”
8. New: print(”fatal error”, file
=sys.stderr)
9. Old: print (x, y) # 输出repr((x, y))
10. New: print((x, y)) # 不同于print(x, y)!
你可以自定义输出项之间的分隔符:
print(”There are <”, 2**32, “> possibilities!”, sep=”")
输出结果是:
There are <4294967296> possibilities!
注意:
1. print()函数不支持老print语句的“软空格”特性,例如,在python2.x中,print “A\n”, “B”会输出”A\nB\n”,而python3.0中,print(”A\n”, “B”)会输出”A\n B\n”
2. 学会渐渐习惯print()吧!
3. 使用2to3源码转换工具时,所有的print语句被自动转换成print()函数调用,对大项目,这是无需争论的。
* python3.0使用字符串(strings)和bytes代替Unicode字符串和8位字符串,这意味着几乎所有使用 Unicode编码和二进制数据的代码都要改动。这个改动很不错,在2.x的世界里,无数的bug都是因为编码问题。
* map()和filter()返回迭代器(iterators)
* dict方法
keys(),items(),values()返回视图(同样是迭代器)而不是列表(list)
* 内建的sorted()方法和list.sort()方法不再接受表示比较函数的cmp参数,使用key参数代替。
* 1/2返回浮点数,使用1//2能得到整数。
* repr()函数对于long整数不再包含拖尾的L,所以不加判断的去除最后一个字符会导致去掉一个有用的数字。
String and
Bytes
* 现在只有一种字符串:str,它的行为和实现都很像2.x的unicode串。
* basestring超类已经去掉了,2to3工具会把每个出现的basestring替换成str。
*
PEP3137:新类型bytes,用来表示二进制数据和编码文本,str和bytes不能混合,需要时,必须进行显示的转换,转换方法是
str.encode()(str->bytes)和bytes.decode()(bytes->str).
* 在原始字符串(raw strings)中所有反斜线都按字面量解释,不再特殊处理Unicode转义字符。
* PEP3112:bytes字面量,例如b”abc”,创建bytes实例。
* PEP3120:默认源文件编码为UTF-8
* PEP3131:可以使用非ASCII标识符(然而,除了注释中贡献者的名字之外,标准库仍然只包含ASCII)
* PEP3116:新的IO实现,API几乎100%向后兼容,二进制文件使用bytes代替strings
* 去除了StringIO和cStringIO模块,取而代之的是io.StringIO或者io.BytesIO
PEP3101:字符串格式化的新方法
* str.format方法(原文提到替代了%操作符,实际上,format方法和%的用法
差别很大,各有所长)。
PEP3106:修补了dict的keys(),items(),values()方法
* 删除了dict.iterkeys(),dict.itervalues()和dict.iteritems()
* dict.keys(),dict.values()和dict.items()返回dict相关数据的引用
PEP3107:函数注解(Function Annotations)
* 注解函数参数和返回值的标准化方法
Exception Stuff
* PEP352:异常类必须继承自BaseException,它异常结构的基类。
* 移除了StandardError
* Dropping sequence behavior (slicing!) and message attribute of exception instances.
* PEP3109:抛出异常:现在必须使用raise Exception(args)而不是原来的raise Exception, args
* PEP3110:捕获异常,现在必须使用except Exception as identifier而不是原来的except Exception, identifier
* PEP3134:异常链(Exception chain)。
* 改良了一些windows不能加载模式时的异常信息,具有本地化处理。
New Class and Metaclass Stuff
* 移除了classic class
* PEP3115:新的metaclass语法
* PEP3119:抽象基类。
* PEP3129:类包装。
* PEP3141:数字抽象基类
其他的语言变化
这里列出大多数的python语言核心和内建函数的变化。
* 移除了backticks(使用repr()代替)
* 移除了<>(不等号,使用!=代替)
* as和with
变成了关键字
* True,False和None变成了关键字
* PEP237:long不存在了,只有int,它和原来的long一样。不再支持以L结尾的数字字面量。移除sys.maxint,因为 int现在已经是无限大了
* PEP238:int相除,返回float
* 改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的bool值
* 移除了__getslice__,语法a[i:j]被解释成a.__getitem__(slice(i,j))
* PEP3102:keyword-only arguments.在函数参数列表中,出现在*args之后的命名参数只能使用”关键字参数”的形式调用
* PEP3104:nonlocal声明。使用nonlocal可以声明一个外部变量(不是global变量)
* PEP3111:raw_input()改名为input(),也就是说,新的input()函数从标准输入设备(sys.stdin)
读取一行
并返回(不包括行结束符),如果输入过早终止,该函数抛出EOFError,如果想使用老的input(),可以使用eval(input())代替。
* xrange()改名为range(),range()现在不是产生一个列表(list),而是一个迭代器。
* PEP3113:移除了”元组参数拆包(tuple parameter unpacking)”。这种写法已经不行了:
def foo(a, (b, c)):…
现在要这样写:
def foo(a, b_c):
b,c = b_c
* PEP3114:next()重命名为__next__(),新的内建函数next()可以调用一个对象的__next__()方法。
* PEP3127:新的八进制字面量,二进制字面量和bin()函数。你应该写0o666而不是0666,oct()函数也做了响应的改动。同样,0b1010等价于10,bin(10)返回”0b1010″。0666这种写法现在是错误的。
* PEP3132:支持迭代器拆包。现在你可以这样写:
a, b, *rest = some_seqence
甚至象这样:
*rest, a = stuff
一般情况下,rest对象是list,而等号右边的对象是可迭代的
* PEP3135:新的super()。你可以不适用任何参数调用super(),正确的参数和实例会被正确选择。如果使用参数,它的行为不变,和以前一样。
* zip(),map(),filter()返回迭代器。
* 移除了string.letters和它的朋友们(string.lowcase和string.uppercase),现在上场的是 string.ascii_letters等
* 移除了apply(),callable(),exefile(),file(),reduce(),reload()
* 移除了dict.has_key()。使用in操作符进行测试
* exec语句没有了,现在是exec()函数
* 移除了__oct__()和__hex__()特殊方法。oct()和hex()方法使用__index__()
* 移除了对__members__和__methods__的支持
* nb_nonzero重命名为nb_bool,__nonzero__()重命名为__bool__()
Optimizations
* 一般情况下,python 3.0比python 2.5慢33%左右。不过仍有提升空间。
模块变动(新的,改进的和废弃的)
* 移除了cPickle模块,可以使用pickle模块代替。最终我们将会有一个透明高效的模块。
* 移除了imageop模块
* 移除了audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5,
MimeWriter, mimify, popen2, rexec, sets, sha, stringold, strop,
sunaudiodev, timing和xmllib模块
* 移除了bsddb模块(单独发布,可以从http://www.jcea.es/programacion/pybsddb.htm
获取)
* 移除了new模块
* os.tmpnam()和os.tmpfile()函数被移动到tmpfile模块下
* tokenize模块现在使用bytes工作。主要的入口点不再是generate_tokens,而是 tokenize.tokenize()
Build and C API Changes
Python’s build process和C API的改动包括:
* PEP3118:新的Buffer API
* PEP3121:扩展模块的的Initialization & Finalization
* PEP3123:使PyObject_HEAD符合标准C
其他的改动和修复
在源码里分散一系列的改进和bug修复。changes log表明,从2.6到3.0,有XXX个改动和YYY的bug修复。
发表评论
-
Python实例讲解 -- 接收邮件 (亲测)
2011-02-23 07:13 319121. 主要使用了 poplib 组件 # -*- ... -
Python实例讲解 -- 发送邮件带附件 (亲测)
2011-02-23 05:16 12094主要使用了 smtp 和 email 组件 # -*- ... -
文本输入控件wx.TextCtrl
2011-02-22 06:49 14405构造函数: wx.TextCtrl ... -
Python设置默认语言编码
2011-02-22 05:31 3103当python中间处理非ASCII编码时,经常会出现如下错误: ... -
Python实例讲解 -- wxpython 最小到托盘及欢迎图片
2011-02-15 00:59 8084需要注意的是,这里是托盘上的图标弹出菜单是覆盖了Creat ... -
Python实例讲解 -- tkinter canvas (设置背景图片及文字)
2011-02-14 22:17 44668先来一个绘图: from Tkinter import ... -
Python实例讲解 -- wxpython 基本的控件 (按钮)
2011-02-12 04:47 98947使用按钮工作 在wxPython 中有很多不同类型的 ... -
Python实例讲解 -- wxpython 基本的控件 (文本)
2011-02-12 04:20 43862使用基本的控件工作 wxPython 工具包提供了多 ... -
Python实例讲解 -- 操作数据库 附mysqldb win32 py2.7下载
2011-02-11 06:27 4547mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此 ... -
Python实例讲解 -- 解析xml
2011-02-11 05:38 8617doc.xml <?xml version=&q ... -
Python 列表 list 数组 array
2011-02-10 05:53 26986Python中的列表(list)类似于C#中的可变数组(Arr ... -
Python字符串的encode与decode
2011-02-10 05:32 3065首先要搞清楚,字符串 ... -
Python实例讲解 -- 认识wxpython 的 Frame
2011-02-09 23:21 8380简单小代码: #!/usr/bin/python # ... -
Python实例讲解 -- 获取本地时间日期(日期计算)
2011-02-09 05:40 419701. 显示当前日期: ... -
Python实例讲解 -- 定时播放 (闹钟+音乐)
2011-02-08 06:44 17570自己写的闹钟, 只可以播放wav格式的音频。 impo ... -
Python实例讲解 -- 图片处理
2011-02-08 02:57 17760虽然图像处理的最佳工 ... -
Python实例讲解 -- 磁盘文件的操作
2011-02-08 00:02 7163在文件夹里有六十多个RM格式的视频文件,我现在需要把它们的文件 ... -
py2exe使用方法 (含一些调试技巧,如压缩email 类)
2011-02-04 06:11 19019一、简介 py2exe是 ... -
wxPython中文教程 简单入门加实例
2011-01-27 21:49 66622wx.Window 是一个基类,许 ... -
新手如何运行第一个python程序
2011-01-19 03:36 21854不少新手朋友 遇到的 ...
相关推荐
Python 3.0是Python语言的一个重大更新,它引入了许多新特性并改进了语法,旨在提高编程效率和代码清晰度。本安装包“python-3.0.msi”是针对Windows操作系统设计的 MSI(Microsoft Installer)格式,方便用户在...
Python 3.0是其历史上的一次重大更新,引入了许多新特性并改进了语法。在这个特定的场景中,我们讨论的是"python官方3.0a5.amd64版本msi安装包",这是一个为64位(amd64)架构设计的预发布版本。 标题中的“Python...
其次,Python 3.0引入了新的语法特性,比如括号用于分组和元组解包。在旧版本中,元组可以用逗号分隔的元素表示,但在Python 3.0中,空括号被用来明确地表示一个空元组。此外,用作分组的括号可以更直观地表达复杂的...
Python 3.0 Eclipse Plugin是专门为开发者设计的一款强大的集成开发环境插件,它将Python 3.0的开发功能无缝地融入到了Eclipse之中。Eclipse是一款广泛应用的开源集成开发环境(IDE),支持多种编程语言,而Python ...
Python 3.0 是 Python 编程语言的一个重要版本,相比之前的版本,它引入了许多新的特性和改进。作为初学者,了解并掌握这些基础知识对于学习 Python 3.0 至关重要。以下是一些关键的知识点,它们在 ...
决策树是一种广泛应用于机器学习领域的算法,它通过学习数据中的特征和目标变量之间的关系来创建一个树状模型,用于预测未知数据的类别。...通过这个代码,你可以更好地掌握机器学习的基础,以及Python 3.0的关键特性。
### 关于《深入Python ...综上所述,《深入Python 3.0》这本书不仅为读者提供了Python 3.0版本的新特性和迁移指南,还通过具体的案例研究和技术细节讲解,帮助开发者更好地理解和适应Python 3.0的新特性及其实现方式。
总之,通过VS2010的Python插件PTVS,开发者可以在熟悉的IDE环境下进行Python开发,同时结合Python 3.0的特性,实现高效编程。然而,由于版本限制,可能需要一些额外的配置工作,而且使用较新的VS版本和Python版本会...
8. **元类和类型系统**:Python 3.0的元类机制更加强大且灵活,同时引入了新的`type`函数作为元类,以支持动态类型系统。 9. **模块导入**:导入语句的改进使得模块导入更加模块化和高效,引入了绝对和相对导入的...
Python 3.0 是Python编程语言的一个重大更新版本,它引入了许多新特性和改进,旨在提升语言的清晰度、效率和现代性。本教程将详细探讨这个版本中的关键概念和特性,帮助初学者快速掌握Python 3.0的基础知识。 1. **...
Python 3.0是Python编程语言的一个重大更新,它引入了许多新特性,改进了语言设计,并废弃了一些在Python 2.x版本中的语法。这个"最新Python 3.0官方手册"是一个宝贵的资源,旨在帮助开发者深入理解这个版本的Python...
- **新特性**:Python 3.0作为Python语言的一个重要更新版本,引入了许多新特性和改进,使得语言更加简洁、一致且易于学习。 - **不兼容性**:由于Python 3.0对语法和功能进行了大量的修改,它与之前的Python 2.x...
此外,Python 3.0还引入了新特性,如类型注解,增强了解析和调试代码的能力。 三、读者反馈 本书自发布以来,受到了广泛的好评。读者们一致认为,《Python一口大小》是他们所见过的最好的Python入门教程。无论是...
在Python 3.0版本中,Pythonwin win32库的更新确保了对最新语言特性和API的兼容性。Python 3.x系列是一个重大更新,引入了许多语法和功能改进,包括字节字符串和Unicode字符串的分离、print函数的引入、以及异常处理...
- **新模块与更新**:Python 3.0 引入了新的标准库模块,如 `asyncio` 用于异步编程,同时更新了许多现有模块,以适应新版本的特性。 **2. Python 基础** - **变量与数据类型**:Python 支持多种数据类型,包括...
通过安装“python-3.0b3.msi”,用户可以获得Python 3.0b3的运行环境,可以编写和运行Python 3.0b3版本的代码,体验这些新特性和改进。需要注意的是,由于这是一个早期预览版,可能会存在一些不稳定因素或已知问题,...
而Python3.0作为Python语言的一个重要版本,以其简洁易读的语法、丰富的库支持和跨平台特性,深受初学者和专业开发者的喜爱。这份“C语言和Python3.0的资料”包含的资源对学习这两门语言具有极大的帮助。 首先,C...