黑马程序员视频库
播妞微信号:boniu236
传智播客旗下互联网资讯、学习资源免费分享平台
Python 3 代表 Python 语言进化的一个产物,所以它不会执行大多数针对 Python 2.x 版本 解释器所写的旧代码。 但是,这并不意味着你不能识别旧有的代码,或者需要广泛的移植才 能使旧代码工作于 3.x 版本下。 事实上,新的语法与过去的语法非常相似。 然而,因为 print 语句在新版本中不再存在,所以它很容易破坏旧有的代码。 附录将讨论 print 和版本 3.x 的其 他变化,并且将着重强调为了使其更优秀,Python 必须进行的一些改进。 最后,我们给出了 一些迁移工具,它们可能有助于你实现这一转变。 Python的3.0版本,常被称为Python 3000,或简称Py3k。 相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。 为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。 新的Python程式建议使用Python 3.0版本的语法。 除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。 目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。 大多数第三方库都正在努力地相容Python 3.0版本。 即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。 Python 3.0的变化主要在以下几个方面:print 函数
print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。 在Python 2.6与Python 2.7里面,以下三种形式是等价的: print "hello" print ("python") #注意print后面有个空格 print("app") #print()不能带有任何其它参数 然而,Python 2.6实际已经支持新的print()语法: from __future__ import print_function print("hello", "python","app", sep=',')Unicode
目前 Python 用户面对的又一个“陷阱”就是,字符串现在默认为 Unicode 编码。 这种变 化不可能很快就来,当处理 Unicode 和通常的 ASCII 字符串时,无数的 Python 开发人员遇到 这种问题已经不止一两天了。 这种问题看起来如下所示: UnicodeEncodeError: 'ascii' codec can't encode character u'®' in position 0: ordinal not in range(128) 在 Python 3.x 中这种类型的问题将不再经常发生。 关于 Python 中使用 Unicode 的更 多信息,可以查看 Unicode HOWTO 文档(请参阅 C.3 节的 Web 地址)。 随着新版本的 Python 采用了这种模型,用户将不再需要使用 Unicode 和 ASCII/非 Unicode 字符串这些 术语。 “Python 3.0 中的新内容”(What’s New in Python 3.0)文档相当详细地总结了这种 新模型。 Python 3 使用了文本(text)和(二进制)数据的概念,而非 Unicode 字符串和 8 位字符 串。 所有的文本都是 Unicode 编码的。 然而,编码的 Unicode 表示成二进制数据。 用来保存 文本的类型是 str,而用来保存数据的类型是 bytes。python2 | python3 | 是否可变 |
str("") | bytes(b"") | 否 |
unicode(u"") | str("") | 否 |
N/A | bytearray | 是 |
除法运算
Python中的除法较其它语言显得非常高端,有套很复杂的规则。 Python中的除法有两个运算符,/和//。 首先来说/除法: 在python 2.x中/除法就跟我们熟悉的大多数语言,比如Java啊C啊差不多,整数相除的结果是一个整数,把小数部分完全忽略掉,浮点数除法会保留小数点的部分得到一个浮点数的结果。 在python 3.x中/除法不再这么做了,对于整数之间的相除,结果也会是浮点数。 Python 2.x: >>> 1 / 20>>> 1.0 / 2.00.5 Python 3.x: >>> 1/20.5 而对于//除法,这种除法叫做floor除法,会对除法的结果自动进行一个floor操作,在python 2.x和python 3.x中是一致的。 python 2.x: >>> -1 // 2 -1 python 3.x: >>> -1 // 2 -1 注意的是并不是舍弃小数部分,而是执行 floor 操作,如果要截取整数部分,那么需要使用 math 模块的 trunc 函数 python 3.x: >>> import math >>> math.trunc(1 / 2) 0 >>> math.trunc(-1 / 2) 0不等运算符
Python 2.x中不等于有两种写法 != 和 <> Python 3.x中去掉了<>, 只有!=一种写法,还好,我从来没有使用<>的习惯输入的不同
从键盘录入一个字符串 原: raw_input( "提示信息" ) 改为: input( "提示信息" ) 在python2.x中raw_input()和input( ),两个函数都存在,其中区别为:- raw_input()---将所有输入作为字符串看待,返回字符串类型
- input()-----只能接收"数字"的输入,在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型(int, float )