Sunday 18 June 2017

Python拾遗(一)python内建函数str()和repr()的区别

MarkdownPad Document
对于python而言,可以使用内建函数str()和repr()来将数值转化成字符串。但是,对于这两个方法,究竟有什么区别呢?
在Python tutorial中,是这么说的:
The str() function is meant to return representations of values which are fairly human-readable, while repr() is meant to generate representations which can be read by the interpreter (or will force a SyntaxError if there is no equivalent syntax).
意思是,str()这个函数用于返回相当具有可读性的数值,而repr()主要用于返回适宜解释器读取的数值,并且当该数值没有对应的字符串时,会返回一个SyntaxError
这个解释还是让人似懂非懂。什么是“具有可读性的数值”?什么又是“适合于解释器读取的数值”?
让我们先看几个例子吧。
>>> # The repr() of a string adds string quotes and backslashes:
... hello = 'hello, world\n'
>>> hellos = repr(hello)
>>> print(hellos)
'hello, world\n'
在这段例子中,变量hellos保留了原来的格式,显示出了\n和引号;不过这段例子可能还是无法真正良好的表达出repr()str()函数的真正区别,让我们再看下一个例子:
>>> from datetime import datetime
>>> now = datetime.nxow()
>>> print(str(now))
2017-04-22 15:41:33.012917
>>> print(repr(now))
datetime.datetime(2017, 4, 22, 15, 41, 33, 12917)
通过str()的输出结果我们能很好知道now实例的内容,但是却丢失了now实例的数据类型信息。而通过repr()的输出结果我们不仅能获得now实例的内容,还能知道now是datetime.datetime对象的实例。
因此str()repr()的不同在于:
  • str()的输出追求可读性,输出格式要便于理解,适合用于输出内容到用户终端。
  • repr()的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用。 另外如果想要自定义类的实例能够被str()repr()所调用,那么就需要在自定义类中重载__str____repr__方法。

Thursday 15 June 2017

回望那个纯真的年代——读《七十年代》有感

        很久没有发博文了,俺最近忙着转专业的事情,焦头烂额,所幸终于转成功了,要稍微的庆贺一下。最近读书很杂,历史、文学、政治、经济都略有涉及,所以俺今天就来写一写这段时间的读后感吧:)

        上周读完了由北岛、李陀先生主编的《七十年代》这样一本回忆录集,选了三十多个当代知识分子(包括了作家,诗人北岛、王安忆;画家陈丹青、张朗朗等人),记述了他们对于七十年代的回忆。在维基百科的年代记事上,七十年代指1970年至1979年这十年的历史。这段历史距离我们这一代,只有短短三十年的长度,却已经如同泛黄的老照片,让人难以捉摸。偶然间看到了这本书,如获至宝,很快读了下来。

        那段历史在我脑海中曾经只是一个个支离破碎的大记事:1971年中美建交、1972年日本首相田中角荣访华、1976年9月毛泽东去世、10月文化大革命结束、1978年十一届三中全会召开,中国改革开放正式开始.......如果说,这些大记事只是骨架的话,这本书能给予了骨架以血肉和细节,让我们能从一个个人的角度去重新回顾和反思那段历史。无论是知青们收听美国之音、BBC之类的“敌台”;还是北岛先生抱着自己的书稿躲避审查;亦或者是中学生们只需要背熟几条“毛主席语录”便可以升学,都让人捧腹、恐惧、亦或者困惑。回忆录的作者们在七十年代大多是二十岁的黄金时代,那种年轻人的对权威的反叛、对自由的追求、对于知识的渴望无不让我感慨不已。

        而让我最为意外的是,在那样一个贫困、混乱而又灰暗的年代,那个时代的青年的精神是如此的纯真和理想主义。

“当蜘蛛网无情的查封了我的炉台/当灰烬的余烟叹息着贫困的悲哀/我依然固执的铺平失望的灰烬/用美丽的雪花写下:相信未来”,郭路生(食指)的诗道出了青年们的心声。于是我们看到,张朗朗先生在被“四人帮”用莫须有的“间谍罪、恶毒攻击中央首长”等罪名关进监狱之后,依然能够在铁窗中坚持自己的信仰,不屈不挠,最后成功的活了下来;遇罗克能在《血统论》红色恐怖的笼罩下,借着形势的变化,一篇《出身论》横空出世,如同流星划破漆黑的夜空,成为当时很多人精神的领袖。我想,在那样一个人人自危的时代,敢于说出自己内心的想法的人,是应该被称作英雄的了。虽然对他们有这样或者那样的诋毁,但是,鲁迅先生曾说,“有缺点的战士终究是战士,完美的苍蝇也终究不过是苍蝇”,这样的人,是我辈之楷模。

  看看如今,似乎理想主义这样一个词已经变成了一种嘲讽,抑或者是当今社会的一种稀缺品。这种现象,我深不以为然。在日本,有一种精神叫做“工匠精神”,指工匠以极致的态度对自己的产品精雕细琢,不断追求完美的过程。在我看来这就是一种理想主义。今天的社会追求一种快销化的增长方式,如赚快钱、看快书、追求快速的个人增值,这无可厚非;但我们不应该忘记,在生活中,还可以有另外一种选择,选择在这样一个社会中保持理想主义的生活方式,如同普罗米修斯盗火,将理想传递下去。如果一个时代没有了这样的人,那将会是悲哀的。

我们应该向那些拿着“民主、自由、独立、社会正义和人道主义”的普罗米修斯致敬。