”’在各种Python的书里翻了N多,最后还是选择了Dive into Python

话说刚开始打算看的就是Dive into Python,但是果断被那个恐怖的“第一个程序”吓住了,因为python处理字符串什么太过灵活以至于完全没有看懂,又在网上看到好多这本书的负面评论[1],于是就把这本书放下了。之后翻过《可爱的python》——发现果然不是我这种毫无脚本语言基础的人看得,翻了A byte of PythonBeginning Python From Novice to Professional 感觉这些书还是写的太细了,看着很没意思,毕竟我以前学过的编程语言也不少了,虽然没有脚本语言……不过Beginning Python From Novice to Professional 的项目时间部分看起来不错,有时间还是想看看。另外一个问题就是有的书不错但翻译不行或者是python2.x版本的书,经过层层筛选,最后决定看Python v3.0c1 documentation里的Tutorial,简洁,而且是3.0的版本,还是中英对照,怎么看都是理想的选择……但是,当我看到Data Structures时我终于受不了了,这也太简洁了,感觉什么都没说清嘛!而且程序的排版越来越差也真是让人难以忍受。晚上虽然没决定要看什么,但是随手在平板里点开了Dive into Python,发现这第一个程序其实不难啊,稍稍熟悉了脚本语言和Python简洁的风格我就发现已经能看懂这本书了,再往下翻感觉这本书其实既不罗嗦又不缺料,很适合我看啊,于是决定再翻开DiP…

”’

以上是一个Python风格的docstring。

DiP3的第一个程序:

  1. suffix = {1000: ['kb', 'mb', 'gb', 'tb', 'pb', 'eb', 'zb', 'yb'],   
  2.           1024: ['kib', 'mib', 'gib', 'tib', 'pib', 'eib', 'zib', 'yib']}   
  3.   
  4. def approximate_size(size, a_kilobyte_is_1024_bytes = true):   
  5.     ”’convert a file size to human-readable form.  
  6.  
  7.     keyword arguments:  
  8.     size                –  file size in bytes  
  9.     a_kilobyte_is_1024_bytes    –  if true(default), use multiples of 1024  
  10.                         if false, use multiples od 1000  
  11.     returns: string  
  12.     ”’  
  13.   
  14.     if size < 0:   
  15.         raise valueerror(‘number must be non-negative’)   
  16.   
  17.     multiple = 1024 if a_kilobyte_is_1024_bytes else 1000   
  18.   
  19.     for suffix in suffix[multiple]:   
  20.         size /= multiple   
  21.         if size < multiple:   
  22.             return ‘{0:.1f} {1}’.format(size, suffix)   
  23.   
  24.     raise valueerror(‘number too large’)   
  25.   
  26. if __name__ == ‘__main__‘:   
  27.         print(approximate_size(1000000000000, false))   
  28.         print(approximate_size(1000000000000))  

顺便show下Sublime Text的着色效果,真心很好看。

clip_image001

最坑的地方是一开始把if __name__ == ‘__main__’:的缩进位置打错了,怎么都出不了结果,郁闷死了……

Footnotes:
[1] 赖勇浩 为什么《Dive into Python》不值得推荐

Comments are closed.

Post Navigation