2016年10月8日星期六

现实就是这样的

工作多年以来,我几乎住遍了各大五星级酒店。但要说体验最好的,还得是我考研时住的那家旅馆。那个旅馆改变了我一生的命运,如果当时住的不是那里,我可能早已回到了家乡的农村,更不会像现在这样在一线城市买房买车,立足下来。

我是村里的第一个大学生,也是直到现在唯一一个考上985的县状元。见识了大城市的灯红酒绿,鬼知道我有多想留在这里。

我学的专业比较冷门,虽然是985院校,但本科毕业生的薪资并不能让我在这个城市生存,而硕士毕业,薪资会有质的飞跃。所以,我必须要考上研究生。

入学三年半,一千一百余天。别人打游戏时我在上自习,别人谈恋爱时我在上自习,别人出去玩时我还在上自习。奖学金拿了无数,普刊、核心、学术,论文发到手软。我知道只要坚持下来,就会得到我想要的。

终于,考研日来了。我的考点在城市另一边,两个多小时的车程,从学校早起过去不太现实,一起考研的同学们一起订了考点附近的星级酒店,我自己订了旁边的一个小旅馆。

虽然是小旅馆,但比想象的要好很多。干净,设施完善,隔音不错,并没有听到其他房间奇怪的声音。但想到命运将在接下来的两天发生改变,我还是失眠了。

不过问题不大,踌躇满志的我像打了鸡血,失眠的影响微不足道。多年的积累没有白费,第一天的考试也非常顺利。只要第二天不出意外,我甚至有信心拿到专业第一名。

现实永远比电视剧狗血,意外就这样来了。

第一天考完后,我把东西都放在了旅馆,然后出去吃饭。回来看书复习的时候,发现准考证不见了!!

我开始发疯地找,床单,柜子,卫生间,鞋柜,枕套,我把房间翻了遍,都没有找到!我跑到吃饭的饭馆,仍然一无所获......

十几年寒窗,眼看就要毁于一旦。想起沐雨经霜供我读书的父母,想起曾发誓要过上好日子的自己,泪流满面。

我哭着走回旅馆,前台关切地问我怎么了,我如实告诉了她。前台是一个比我大几岁的姐姐,得知了我的遭遇后,跟同事说明了情况,让别人帮她代班,她来陪我去找准考证。我仍清晰地记得她说的那句话:这个孩子在我们这里住,就必须对他负责!更何况这件事可能会影响他一辈子!

后来的故事很简单,我的准考证落在了考场......门卫大爷不让我们进去,她磨破了嘴终于说服大爷,跟我们一起进去拿到了准考证。






后来

为了报答她,我提出请她吃饭,但她没有答应,说不想让我破费,然而她咕咕叫的肚子出卖了她。我买了点零食,一起到我的房间边吃边聊天。

是的,后来我们疯狂地做爱了。那晚做了五次,第二天早上我睡到中午,完美错过了考试。


再后来

我懊恼不已,心灰意冷,拿着剩下的十元钱自暴自弃地买了彩票,中了一等奖,买了车买了房,过上了我想要的生活:) 

Python2.x与3​​.x版本区别

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()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python 2.6与Python 2.7里面,以下三种形式是等价的:
1
2
3
print "fish"
print ("fish"#注意print后面有个空格
print("fish"#print()不能带有任何其它参数
然而,Python 2.6实际已经支持新的print()语法:
1
2
from __future__ import print_function
print("fish""panda", sep=', ')
新的str类别表示一个Unicode字串,相当于Python 2.x版本的unicode类别。而位元组序列则用类似b"abc"的语法表示,用bytes类表示,相当于Python 2.x的str类别。
现在两种类别不能再隐式地自动转换,因此在Python 3.x里面"fish"+b"panda"是错误。正确的写法是"fish"+b"panda".decode("utf-8")。 Python 2.6可以自动地将位元组序列识别为Unicode字串,方法是:
1
2
from __future__ import unicode_literals
print(repr("fish"))
除法运算符"/"在Python 3.x内总是返回浮点数。而在Python 2.6内会判断被除数与除数是否是整数。如果是整数会返回整数值,相当于整除;浮点数则返回浮点数值。
为了让Python 2.6统一返回浮点数值,可以:
1
2
from __future__ import division
print(3/2)
  • 捕获异常的语法由except exc, var改为except exc as var。使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支援这两种语法。
  • 集合(set) 的新写法:{1,2,3,4}。注意{}仍然表示空的字典(dict) 。
  • 字典推导式(Dictionary comprehensions) {expr1: expr2 for k, v in d},这个语法等价于
1
2
3
4
result={}
for k, v in d.items():
    result[expr1]=expr2
return result
集合推导式(Set Comprehensions) {expr1 for x in stuff}。这个语法等价于:
1
2
3
4
result = set()
for in stuff:
    result.add(expr1)
return result
  • 八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。新增了一个bin()函数用于将一个整数转换成二进制字串。 Python 2.6已经支援这两种语法。
  • dict.keys(), dict.values(), dict.items(), map(), filter(), range(), zip()不再返回列表,而是迭代器。
  • 如果两个物件之间没有定义明确的有意义的顺序。使用<, >, <=, >=比较它们会投掷异常。比如1 < ""在Python 2.6里面会返回True,而在Python 3.0里面会投掷异常。现在cmp(), instance.__cmp__()函数已经被删除。
  • 可以注释函数的参数与返回值。此特性可方便IDE对原始码进行更深入的分析。例如给参数增加类别讯息:
  • 1
    2
    def sendMail(from_: str, to: str, title: str, body: str-bool:
        pass
  • 合并int与long类型。
  • 多个模块被改名(根据PEP8):
  • 旧的名字新的名字
    _winregwinreg
    ConfigParserconfigparser
    copy_regcopyreg
    Queuequeue
    SocketServersocketserver
    reprreprlib
  • StringIO模块现在被合并到新的io模组内。 new, md5, gopherlib等模块被删除。 Python 2.6已经支援新的io模组。
  • httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。
  • 取消了exec语句,只剩下exec()函数。 Python 2.6已经支援exec()函数。