设为首页 收藏本站
查看: 780|回复: 0

[经验分享] Python:Python 3.x 的革新

[复制链接]

尚未签到

发表于 2015-12-1 11:00:40 | 显示全部楼层 |阅读模式
  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>@abstractmethod 和 @abstractproperty 两个 decorator 使抽象方法(属性)编写更加方便;  

  • 废弃了 file 类;  

  • 迭代器的 next() 方法改名为 __next__(),并增加内置函数 next(),用以调用迭代器的 __next__() 方法 ;
七、异常


  • 抛出异常:使用 raise Exception(args) 而非 raise Exception, args;  

  • 捕获异常:使用 except Exception as> 而非 except Exception,>;
八、模块变动


  • 移除了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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-145790-1-1.html 上篇帖子: python检测服务器是否ping通 下篇帖子: 理解Python元类(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表