零基础学编程027:站在巨人的肩膀上

在《零基础学编程021:获取股票实时行情数据》这一节里,我们利用urllib抓取新浪财经中的股票数据,可以取出谷歌股票的开盘价,回顾一下代码:

import urllib.request as req

with req.urlopen('http://hq.sinajs.cn/list=gb_goog') as f :
    hq = f.read().decode('GBK')
    v = hq.split(',')
    print(v[1])

但我们很多时候并不需要也不应该从零开始构建一个程序,大量的程序员已经构建了丰富的而且免费的模块供我们使用。编程领域中流行着一句非常有名的话,叫做“不要重复发明轮子(Don't Reinvent the Wheel)”,意思是说不要重新去写别人已经写好的、甚至已经优化过的基本函数。

程序员通常会看不起别人写的代码,所以重复发明了一个又一个的轮子,但他写的代码也好不到哪里去。因为一串代码从表面上看比较简单,但实际动手时会遇到许多复杂的情况,有时需要花费大量的时间才能让程序不出错,并且性能稳定。所以,如果有比较可信的代码库,又不侵犯版权的情况下,尽量还是用别人写好的代码库更能节省时间。

Python中已经建立了一个庞大的代码库社区,称作 Python Package Index,简称Pypi,网址:https://pypi.python.org。世界各地的程序员们已经贡献了无数的优秀的模块,在动手写一个程序时,记得到这个网站上搜一搜有没有可以直接拿来就用的函数,站在巨人们的肩膀上,写起程序来又快又好。

对于我们文章开头提到的功能,在Pypi中就有一个现成的提到股票行情的模块库,叫yahoo-finance,看看该模块库的简单帮助说明,几行代码就可以取出开盘价。这个代码库的优点在于还提供了几十个其它功能,包括取出历史行情数据,这个功能我们将来会用到。

from yahoo_finance import Share
openPrice = Share('goog').get_open()
print(openPrice)

对于新手来说,上面的代码一运行就会报错,是import语句执行的时候提示找不到yahoo_finance包。所以,最值得一提的是安装这个yahoo-finance模块库的过程,将来安装其它任何模块库也如法炮制即可。

如今的Python已经极大地简化了模块安装的过程,它就是 pip,在python2.7.9和python 3.4之后的安装版本中都已经内置了pip,只要有网络,安装任何模块库,一般只需要一个命令就可以搞定。

pip 是“Pip Installs Packages”的缩写,是一个专门用于管理Python软件包的程序,运行这条命令:

python -m pip install yahoo-finance

新手不知道在哪里运行上面那条命令,如果环境不正确(PATH环境变量问题),在cmd.exe黑窗口中运行也会出错。如果你安装了WinPython,则运行那个WinPython Command Prompt.exe,在这个黑窗口中执行pip命令即可。安装过程是全自动的,成功后会给出相应的提示。

小结:

  • 不要重复发明轮子
  • pypi中资源非常丰富
  • pip用于安装其它模块库

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-03-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

LVS中采用Jboss作为RealServer的配置要点

 博客建站已过 2 个月了,大部分文章总是在记录博客的折腾史,估计大部分喜欢折腾的博主都有这样的时期吧!现在博客基本算是定型稳定,是时候写点与主题相关的博文了,...

31812
来自专栏Python攻城狮

GitHub 系列之「怎样使用 GitHub?」1.写在前边的话,为什么要写CitHub?2.GitHub 是什么?3.注册 GitHub

跟朋友在交流的时候听到求职的时候发现有些公司要附Github帐号,一个优秀的 GitHub 账号当然能让你增色不少。自己之前听说过,但没有花时间研究,最后花了时...

1263
来自专栏小巫技术博客

Android Junit单元测试-声明套件类

884
来自专栏诸葛青云的专栏

两个小巧好用的C语言编辑器

近期有一些新关注的伙伴在后台经常留言刚入门 C语言 我该选择什么 C语言 编辑器好呢?都说欲善其事必先利其器,网络上也有很多不同类型的编辑器,让人很难进行抉择!...

2680
来自专栏BaronTalk

Android 模块化探索与实践

首发于《程序员》杂志五月刊 前言 万维网发明人 Tim Berners-Lee 谈到设计原理时说过:“简单性和模块化是软件工程的基石;分布式和容错性是互联网的...

4589
来自专栏向治洪

为什么我们要使用ssh框架技术,及感想

前言:       在公司从C++转向Java Web方向大概有3个月(11月初-1月底)了。三个月前对Java和Web还几乎是零基础。然后从安装Eclipse...

2167
来自专栏程序员与猫

单元测试之道

标签: 单元测试 前言 系列 1. 前言 在一个项目当中,开发者常常要做大量的测试工作,如单元测试,集成测试,回归测试,压力测试 .etc。当然,依据项目情况大...

1796
来自专栏美团技术团队

“小众”之美——Ruby在QA自动化中的应用

1993
来自专栏魏琼东

AgileEAS.NET平台开发实例-药店系统-快速的SAAS开发体验

一、AgileEAS.NET应用开发简介 在4月份,callhot写过一系列的有关于AgileEAS.NET平台的开发应用的系列AgileEAS.NET平台开发...

2516
来自专栏阮一峰的网络日志

为什么寄存器比内存快?

计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。 ? 同样都是晶体管存储设备,为什么寄存器比内...

3467

扫码关注云+社区

领取腾讯云代金券