Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >零基础学编程022:函数的世界

零基础学编程022:函数的世界

作者头像
申龙斌
发布于 2018-03-06 02:47:08
发布于 2018-03-06 02:47:08
76400
代码可运行
举报
运行总次数:0
代码可运行

通过《零基础学编程021:获取股票实时行情数据》的学习,我们已经可以取出“谷歌”股票的开盘价,今天我们要取出GAFATA共6支股票的开盘价。

先回顾上次的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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])

要获取6支股票行情,那就先找到GAFATA的股票编码(gb_goog,gb_aman,gb_fb,gb_aapl,gb_hk00700,gb_baba),然后把这段代码复制几遍,把股票编码替换一下就可以完成任务了。

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]) with req.urlopen('http://hq.sinajs.cn/list=gb_amzn') as f : hq = f.read().decode('GBK') v = hq.split(',') print(v[1]) with req.urlopen('http://hq.sinajs.cn/list=gb_fb') as f : hq = f.read().decode('GBK') v = hq.split(',') print(v[1]) with req.urlopen('http://hq.sinajs.cn/list=gb_aapl') as f : hq = f.read().decode('GBK') v = hq.split(',') print(v[1]) with req.urlopen('http://hq.sinajs.cn/list=rt_hk00700') as f : hq = f.read().decode('GBK') v = hq.split(',') print(v[2]) #注意港股有所不同 with req.urlopen('http://hq.sinajs.cn/list=gb_baba') as f : hq = f.read().decode('GBK') v = hq.split(',') print(v[1])

任务虽然完成,但这种代码太重复了,有四行代码重复了6次,只是股票编码不同而已。如果以后我们要取出收盘价,又得把所有语句中带 v[1] 的地方都换掉,非常不方便。所有编程语言中都提供了“函数function”这个特性来解决重复代码的问题。

编程新手学习时,可以把编程语言中的函数与数学中的函数进行类比,数学函数中有函数名、变量、公式、函数值,在编程语言中分别对应着函数名、参数、函数体、返回值。数学中有二元函数,程序中有多个参数。

例如:我们在《零基础学编程011:复利数据表问题(总结) 》里遇到的复利公式就是一个简单的数学函数。

Python中定义一个函数非常方便,刚才的复利公式可以这样写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def f(x) :
   return (1 + 0.01) ** x

关键词def表示定义一个函数块,可以用英语单词define function(定义函数)来助记,定义完成后,以后只需调用函数(call function)就可以得到相应的结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print( f(100) )
print( f(365) )

函数的一个主要功能就是减少重复的代码,便于将来的维护。回到我们的股票程序上,我们定义一个函数,给出股票编码,返回开盘价。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def price(stock) :
    url = 'http://hq.sinajs.cn/list=' + stock
    with req.urlopen(url) as f :
        hq = f.read().decode('GBK')
        v = hq.split(',')
        return v[1]

有了函数定义之后,只需要调用6次,就可以得到6支股票的行情了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print( price('gb_goog') )
print( price('gb_amzn') ) 
print( price('gb_fb') )
print( price('gb_aapl') )
print( price('rt_hk00700') ) 
print( price('gb_baba') ) 

其实print也是函数,不过它是python系统自带的,也叫内置函数(built-in function)。而我们用def定义的函数,称为自定义函数

小结:

  • 函数function可以减少重复性代码,便于将来的维护
  • 有内置函数,我们自己写的叫自定义函数
  • python中大量模块中包括了大量函数
  • def 关键字用于定义一个函数块
  • 冒号之后的各行是函数体,要注意缩进
  • 用return返回想要的结果
  • 调用函数的基本形式:函数名( 函数参数 )

上面的程序中有一个小问题,你能否发现?你能自己解决它吗?

--- END ---

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 申龙斌的程序人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
零基础学编程028:面向对象编程OOP
在《零基础学编程021:获取股票实时行情数据》一节中,我们想获取6支股票的行情数据,在《零基础学编程022:函数的世界》里我们能够把重复性的代码封装为一个函数price(),以后获得不同的股票行情只需调用函数即可,回顾一下这个函数的代码: def price(stockCode) : url = 'http://hq.sinajs.cn/list=' + stockCode with req.urlopen(url) as f : hq = f.read().decode('
申龙斌
2018/03/06
8780
零基础学编程028:面向对象编程OOP
零基础学编程023:用with实现优雅地释放资源
在《零基础学编程022:函数的世界》中我们写了一个函数,通过访问新浪的实时行情服务,得到股票的开盘价。 import urllib.request as req def price(stock) : url = 'http://hq.sinajs.cn/list=' + stock with req.urlopen(url) as f : hq = f.read().decode('GBK') v = hq.split(',') retur
申龙斌
2018/03/06
1K0
股票API
股票数据的获取目前有如下两种方法可以获取: 1. http/javascript接口取数据 2. web-service接口
全栈程序员站长
2022/07/23
5.4K0
零基础学编程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]) 但我们很多时候并不需要也不应该从零开始构建一个程
申龙斌
2018/03/06
8800
零基础学编程027:站在巨人的肩膀上
零基础学编程031:Python与其它语言最不同的一条语法规则
有C或JAVA其它编程语言基础的人可能对Python中的这条语法规则最不适应:Python中的缩进是有语法含义的,它用来表示一个代码块(code block)。这里说的代码块是指函数定义、条件语句、循环语句等等。缩进就是指每行代码最前面的几个空格或TAB制表符,通常是与上一行的冒号一起使用的,例如: # 为了清楚地表示缩进,我把空格都用.表示 def price(stock) : ....url = 'http://hq.sinajs.cn/list=' + stock ....with req.urlop
申龙斌
2018/03/06
2.1K0
零基础学编程031:Python与其它语言最不同的一条语法规则
股票数据API整理
最近在做股票分析系统,数据获取源头成了一大问题,经过仔细的研究发现了很多获取办法,这里整理一下,方便后来者使用。 获取股票数据的源头主要有:数据超市、雅虎、新浪、Google、和讯、搜狐、ChinaStockWebService、东方财富客户端、证券之星、网易财经。 根据最近频繁出现的数据超市,可以无限制获取相关数据,而不再需要使用爬虫等方式获取,这样不仅节省了极大资源,也有利于遍历数据。 列出来相关网站清单,开发者可自行到这些网站查询调用方法。 聚合数据 https://www.juhe.cn/ 百度A
机器学习AI算法工程
2018/03/15
25.9K2
股票数据API整理
股票实时数据接口
如果你要同时查询多个股票,那么在URL最后加上一个逗号,再加上股票代码就可以了;比如你要一次查询大秦铁路(601006)和大同煤业(601001)的行情,就这样使用URL:
斯文的程序
2019/11/07
27.1K0
零基础学编程021:获取股票实时行情数据
春节期间重写了“笑来投资演练程序1.0版”这个程序,可以每个月自动更新几支股票的行情数据。程序的功能不复杂,但是编程新手想实现它仍有相当的困难。为了短时间内完成主要功能,我使用了最熟悉的C#编程语言,
申龙斌
2018/03/06
2.8K0
零基础学编程021:获取股票实时行情数据
新浪实时股票数据接口1
股票数据的获取目前有如下两种方法可以获取: 1. http/javascript接口取数据 2. web-service接口
全栈程序员站长
2022/11/16
5.4K1
新浪实时股票数据接口1
零基础学编程033:字符串的split拆分与join连接
在《零基础学编程021:获取股票实时行情数据》这一节里,我们学了split()函数,可以将一个字符串切开。假设有一个历史行情字符串,信息包括:股票名称、开盘价、最高价、最低价、收盘价、交易量等,用split() 之后可以方便地取出任何一个价格,例如:v[1]就是开盘价。 hq = "谷歌,843.64,847.24,840.8,845.62,779900" v = hq.split(',') print(v) # 输出结果:['谷歌', '843.64', '847.24', '840.8', '845.
申龙斌
2018/03/06
8050
零基础学编程033:字符串的split拆分与join连接
获取A股行情数据方法[通俗易懂]
做股票量化分析,获取股票行情数据是第一步,结合网上的信息,和我用过的一些东西,做个总结。以后有新信息,逐步完善。
全栈程序员站长
2022/07/25
8.3K0
python股票数据分析_用Python抓取新浪的股票数据「建议收藏」
最近做数据分析,先是找到了Tushare这个免费开源的第三方财经包,但后来用了几天之后发现,它的日交易历史数据有时候有不准确的情况,查看源代码发现,这个包的数据源是凤凰财经,而对比凤凰网站其站点的数据本身就是有出入的,所以到也不是Tushare的问题。于是百度了一圈,发现很多网友都是获取新浪的股票数据,包括其历史数据和实时数据。于是乎试了一下,发现速度还挺快,没有具体去测时间但从感官上要比Tushare获取的凤凰数据要快得多。并且数据也很丰富,囊括了每只票自上市以来的所有数据,对此Tushare貌似只有三年数据。当然,新浪数据也有不足的地方,细节上没凤凰数据那么丰富,没有价MA5、MA10以及量MA5、MA10等等,最重要的还是缺少每天的交易额。所幸我目前计算所需的数据里还不包括每天交易额。
全栈程序员站长
2022/07/23
2.5K0
Python高效编程(四)
实际编程和面试都会遇到的典型问题。 图片来源于网络 如何读写文本文件 # python2 s = u'你好' f = open('py2.txt','w') f.write(s.encode('gb
dreamkong
2018/06/21
8500
自学python 一个简单的股票工具,源代码分享[通俗易懂]
项目名称:股票工具 想要的功能: 1 获取数据 实时某支股票的 ‘买一量’ ‘卖一量’ #获取数据 2 数据分析 对’买一量’ ‘卖一量’的判断 进入时候提醒 2.1 买一量,大于、小于 多少时,提示买入卖出 2.2 卖一量,大于、小于 多少时,提示买入卖出 2.3 涨幅计算
全栈程序员站长
2022/07/04
1.3K1
自学python 一个简单的股票工具,源代码分享[通俗易懂]
Python股票实时查看告警工具
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
逝兮诚
2019/10/30
3.1K0
盘一盘 Python 系列 4 - Pandas (上)
Pandas 是 Python 为解决数据分析而创建的,详情看官网 (https://pandas.pydata.org/)。 在使用 pandas 之前,需要引进它,语法如下:
用户5753894
2019/07/05
6.3K0
盘一盘 Python 系列 4 - Pandas (上)
盘一盘 Python 系列 4 - Pandas (下)
数据表可以按「键」合并,用 merge 函数;可以按「轴」来连接,用 concat 函数。
用户5753894
2019/07/05
4.8K0
盘一盘 Python 系列 4 - Pandas (下)
Python量化学习-提取证券数据
不知道公众号有多少读者买基金或者炒股,分享一下如何用python获取证券信息 1、网易财经 import requests from lxml import etree headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36' } def parse_url(url):
用户9925864
2022/07/27
9290
Python量化学习-提取证券数据
python 股票历史数据(python获取股票历史数据)
大家好,又见面了,我是你们的朋友全栈君。 因为最近需要用到股市的各种指数数据,刚开始想的是从同花顺等交易软件直接导出,结果发现要用滚轮滚到最开始的日期,这过于繁琐了,我对于这种重复性的劳动一向不耐烦,而且这种方法在以后每日更新的时候也很不方便。所以我把视线转向了网上的各种api。网上比较普遍的主要有两种,一种是新浪的api,一种是雅虎的api。新浪的api很方便,速度也很快,不过就网上的资料而言,似乎只能提取当天的数据。雅虎的api功能更齐全,但是连接速度比较慢,有时候一个连接请求都要10多秒甚至20
全栈程序员站长
2022/08/01
1.9K0
可视化神器Plotly玩转股票图
本文是可视化神器Plotly绘图的第7篇,讲解的是如何通过Plotly来绘制与股市相关的图形,比如基础K线图、OHLC图等。
皮大大
2021/04/28
6.6K0
可视化神器Plotly玩转股票图
相关推荐
零基础学编程028:面向对象编程OOP
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验