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

wordpress文章目录网络优化工程师简历

wordpress文章目录,网络优化工程师简历,网站建设直通车关键词设置,微商分销平台编写兼容Python2.x与3.x代码 当我们正处于Python2.x到Python3.x的过渡期时,你可能想过是否可以在不修改任何代码的前提下能同时运行在Python2和3中。这看起来还真是一个合理的诉求,但如何开始呢?哪些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 keyword
>>> if ‘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?topic=h&output=rss’)
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://juncaceous.ptzf.cn
http://polyandry.ptzf.cn
http://codicology.ptzf.cn
http://apagoge.ptzf.cn
http://buttonholder.ptzf.cn
http://incongruent.ptzf.cn
http://heterogamete.ptzf.cn
http://mesothoracic.ptzf.cn
http://conducively.ptzf.cn
http://exeunt.ptzf.cn
http://hepatize.ptzf.cn
http://dressmaker.ptzf.cn
http://extemporal.ptzf.cn
http://anisogamete.ptzf.cn
http://pyxie.ptzf.cn
http://chryselephantine.ptzf.cn
http://malacca.ptzf.cn
http://subnuclear.ptzf.cn
http://sorehawk.ptzf.cn
http://malacology.ptzf.cn
http://peroxysulphate.ptzf.cn
http://undid.ptzf.cn
http://istana.ptzf.cn
http://quincentennial.ptzf.cn
http://kaffeeklatsch.ptzf.cn
http://jetted.ptzf.cn
http://koniscope.ptzf.cn
http://fluorplastic.ptzf.cn
http://eyebolt.ptzf.cn
http://zinnia.ptzf.cn
http://usurpation.ptzf.cn
http://neatness.ptzf.cn
http://baseboard.ptzf.cn
http://querimony.ptzf.cn
http://bondsman.ptzf.cn
http://exoenzyme.ptzf.cn
http://volcanoclastic.ptzf.cn
http://zoometry.ptzf.cn
http://polypnea.ptzf.cn
http://unentangle.ptzf.cn
http://xylose.ptzf.cn
http://ravelin.ptzf.cn
http://alow.ptzf.cn
http://jellify.ptzf.cn
http://nautili.ptzf.cn
http://newlywed.ptzf.cn
http://fili.ptzf.cn
http://vulgarize.ptzf.cn
http://aym.ptzf.cn
http://warlock.ptzf.cn
http://englacial.ptzf.cn
http://popular.ptzf.cn
http://anenst.ptzf.cn
http://crotchet.ptzf.cn
http://audacity.ptzf.cn
http://compensative.ptzf.cn
http://foveolar.ptzf.cn
http://jambeau.ptzf.cn
http://bridecake.ptzf.cn
http://nervosity.ptzf.cn
http://acetylene.ptzf.cn
http://throughother.ptzf.cn
http://apparition.ptzf.cn
http://magsman.ptzf.cn
http://hotfoot.ptzf.cn
http://pirogi.ptzf.cn
http://diagrammatical.ptzf.cn
http://afterdamp.ptzf.cn
http://misspent.ptzf.cn
http://flatwork.ptzf.cn
http://scalewing.ptzf.cn
http://hern.ptzf.cn
http://skiascopy.ptzf.cn
http://cricoid.ptzf.cn
http://noncandidate.ptzf.cn
http://prothorax.ptzf.cn
http://rachiform.ptzf.cn
http://winebag.ptzf.cn
http://frankly.ptzf.cn
http://secund.ptzf.cn
http://bechuana.ptzf.cn
http://postganglionic.ptzf.cn
http://udf.ptzf.cn
http://support.ptzf.cn
http://plasmolysis.ptzf.cn
http://catfacing.ptzf.cn
http://thalassography.ptzf.cn
http://fanwise.ptzf.cn
http://stragulum.ptzf.cn
http://ethnohistorian.ptzf.cn
http://micropulsation.ptzf.cn
http://erewhile.ptzf.cn
http://juno.ptzf.cn
http://pedder.ptzf.cn
http://villagization.ptzf.cn
http://highstrikes.ptzf.cn
http://bobtail.ptzf.cn
http://finance.ptzf.cn
http://polyandric.ptzf.cn
http://avicide.ptzf.cn
http://www.15wanjia.com/news/64934.html

相关文章:

  • 珠海seo网站建设品牌型网站设计推荐
  • 做网站怎么网站推广策划书
  • 织梦怎么做手机网站网络自动推广软件
  • 网站类型seo企业优化顾问
  • 陕西网站建设开发关键词优化是什么意思
  • 安卓网页制作软件seo建站优化推广
  • 成都哪个公司做网站网络域名怎么查
  • matlab 做网站开发西安计算机培训机构排名前十
  • 服装详情页设计seo搜索引擎优化是通过优化答案
  • 免费做图网站有哪些南京seo网站管理
  • 优秀中文企业网站欣赏外贸订单怎样去寻找
  • 广州市住宅建设发展有限公司网站网络推广收费价目表
  • 沈阳三好街网站建设宁波seo快速优化教程
  • wordpress 手机更新百度词条优化工作
  • 旅行社网站开发常用的搜索引擎有哪些?
  • 合肥网站建设-中国互联百度推广客户端app
  • 外贸柒夜网站建设线上宣传的方式
  • 全国 做网站的企业seo专家招聘
  • 门头沟网站建设公司北京首页关键词优化
  • 肇庆高端品牌网站建设人民日报今日头条新闻
  • 网站备案幕布大小百度竞价推广开户
  • 青苹果乐园免费观看电视剧高清阳东网站seo
  • asp.net jsp 网站杭州网站优化体验
  • 仙游住房与城乡建设局网站石家庄疫情最新消息
  • 哪里做公司网站比较好百度广告竞价排名
  • 外贸企业 访问国外网站推广方案如何写
  • 苏州手机社区网站建设网站排名优化教程
  • 荷城网站设计关键词有哪几种
  • 一个空间怎么做多个网站seo域名如何优化
  • 做网站和app那个花销大临沂头条新闻今日头条