当前位置: 首页 > news >正文

电商网站建设服务网站站外链接

电商网站建设服务,网站站外链接,网页版传奇下载,那里可以免费建网站编写兼容Python2.x与3.x代码 当我们正处于Python2.x到Python3.x的过渡期时#xff0c;你可能想过是否可以在不修改任何代码的前提下能同时运行在Python2和3中。这看起来还真是一个合理的诉求#xff0c;但如何开始呢#xff1f;哪些Python2代码在3.x解释器执行时容易出状况…编写兼容Python2.x与3.x代码 当我们正处于Python2.x到Python3.x的过渡期时你可能想过是否可以在不修改任何代码的前提下能同时运行在Python2和3中。这看起来还真是一个合理的诉求但如何开始呢哪些Python2代码在3.x解释器执行时容易出状况呢 ####print vs print() 如果你想的和我一样你或许会说print语句这是个很好的着手点先简单展示一下print在2.x中是一条语句而在3.x中它是一个关键字或者是保留字。换句话说因为这个变化涉及到语言的语法你不可以使用在if语句中Python仍然没有#ifdef 宏。下面尝试把括号里面的参数打印出来 print(“hello World!”) hello World!很酷这个在Python2和Python3中都可以运行而且运行的效果是一样的再来看看下面这段 print(10, 20) # python2 (10,20)此时你并没有像前面那样幸运得到一样的结果Python2中打印的是元组(tuple)而在Python3中传递多个参数到print()里面时打印的是两个值 print(10, 20) # Python 3 10 20如果你思考得比较多的话我们可以检查print是否是一个关键字keyword模块包含一个关键字列表。print在3.x中不是关键字可以简单验证一下 import keyword‘print’ in keyword.kwlist False作为一名聪明的程序员你可能在2.x中尝试的时候期待的结果是True尽管这并没有错但是为了达到Python3的效果但你仍然会因为其他原因导致失败。 import keywordif ‘print’ in keyword.kwlist: ... from __future__ import print_function ... File “”, line 2 SyntaxError: from __future__ imports must occur at the beginning of the file一种解决方案是使用一个函数其功能类似于print其中之一是sys.stdout.write()另一个是distutils.log.warn()。不管出于什么原因我们决定使用后者。“hello world”的例子看起来是这样的 # python 2.x print ‘hello world’ # python 3.x print(“hello world”)下面的代码就可以在两个版本中通用 # python2.x 3.x 兼容 from distutils.log import warn as printf printf(“hello world”)为什么我们不用sys.stdout.write()呢因为我们需要添加一个NEWLINE字符在字符串的结尾来兼容这种行为(python2.x中write方法不会换行) # Python 2.x 3.x 兼容 import sys sys.stdout.write(“hello World\n”)####Import your way to a solution 一般情况情况下import时没什么烦恼只要正确的导入就行但在下面代码中我们想导入urlopen()函数在Python2中他同时存在与urllib2和urllib2中我们使用后者在Python3中他被集成到了urllib.request中而你的方案是要既能在2.x和3.x中正常工作 try:from urllib2 import urlopen except ImportError:from urllib.request import urlopen出于对内存的保护也许你对iterator(Python3)版本的zip()更加有兴趣在Python2中iterator版本是itertools.izip()。这个函数在Python3中被重命名替换成了zip()。如果你使用迭代版本导入语句也非常直白 try:from itertools import izip as zip except ImportError:pass另一个列子是看来来并不怎么优雅的StringIO类在Python2中纯Python版本是StringIO模块意味着访问的时候是通过StringIO.StringIO同样还有一个更为快速的C语言版本位于cStringIO.StringIO不过这取决你的Python安装版本你可以优先使用cStringIO然后是StringIO如果cStringIO不能用的话)。在Python3中Unicode是默认的string类型但是如果你做任何和网络相关的操作很有可能你不得不用ASCII/字节字符串来操作所以代替StringIO你要io.BytesIO为了达到你想要的这个导入看起来有点丑 try:from io import BytesIO as StringIO except ImportError:try:from cStringIO import StringIOexcept ImportError:from StringIO import StringIO####Putting it all together 如果你运气好的话上面那些就是你要准备做的全部剩下的代码都比开始设置的地方更简单。如果你按照上面的方式导入了distutils.log.warn()[printf()],url*urlopen(),*.StringIO和一个标准的导入xml.etree.ElementTree(2.5及更新的)现在你就可以写一个非常简短短的解析器来展示从Google News服务中提供的头条故事译注当然首先得备一个梯子只需八行代码 g urlopen(‘http://news.google.com/news?topichoutputrss’) f StringIO(g.read()) g.close() tree xml.etree.ElementTree.parse(f) f.close() for elmt in tree.getiterator():if elmt.tag ‘title’ and not \elmt.text.startswith(‘Top Stories’):printf(‘- %s’ % elmt.text)这段脚本在2.x和3.x下面运行时不需要做任何改动运行效果完全一样当然如果你正在使用的是2.4或者更老的版本你需要单独下载ElementTree。 但是有时候感觉这些改变把你优雅的Python代码弄得一团糟毕竟可读性才是最重要的如果你要优先保证代码的整洁而且在不修改任何地方的前提下运行在两个版本的Python环境中那么你可以看一下six包。 six一个兼容库它的主要任务是提供接口隐藏复杂的细节你可以在这里找到它。无论你是使用像six这样的库还是用自己的方法来做我们希望这个简短的介绍可以让你开始考虑写的代码能够在2.x和3.x下同时运行。
http://www.hkea.cn/news/14425244/

相关文章:

  • 钓鱼网站怎么做防护教程济南网红
  • 学院招生网站建设方案网站建设600分站优缺点
  • 左右网站模版网站建设与维护蒋勇从
  • 贵阳门户网站公司网站建设服务公司
  • 个人适合做什么网站wordpress acg站
  • 网站安全性设计wordpress系统加速优化
  • 网站建设公司专业网站开发制作音乐网站 源码
  • 桂林网站优化注意事项网上商店网站设计
  • wordpress 网站地图类网页制作与网站建设实战教程
  • 怎么做网站推广佳木斯做网站上传图片多大合适
  • 有哪些网站程序网站突然不收录2017
  • 威特视频网站建设方案广州网站制作功能
  • 自学网站开发要多久网站设计与建设的参考文献
  • 婚介网站模板网店设计作用有哪些
  • 做淘宝的导购网站WordPress minn主题破解版
  • 网站如何提高排名保定网站建设费用
  • 宁津做网站公司樟木头镇仿做网站
  • 深圳哪些公司需要做网站带做网站绿标
  • 唐山企业建网站广告设计公司开的版面费
  • 成都建站网址网站开发与建设
  • 沧州网站设计哪家好淘宝做的网站会不会过期
  • 做58类网站需要多少钱嵌入式培训心得
  • 鹰潭网站开发建网站需要多少费用
  • 开封做网站的公司网站 推广
  • 专业网站建设详细方案在什么网站做公司人员增减
  • 深圳网站建设哪些东莞市网站设计
  • 公司注册网站及流程网站开发教程大全
  • 为企业规划一个网站如何区分官方网站和空壳网站
  • 集团网站建设建站模板设计公司介绍
  • 网站内容转载长沙网站开发培训学校