__init__.py
看看easyutils文件夹内的__init__.py文件源代码:
# coding:utf8
from .timeutils import *
from .stock import *
__version__ = '0.1.6'
也就是从自己模块引入了timeutils子模块的全部内容,又从自己模块引入了stock子模块的全部内容。其版本是0.1.6版。注意引用自己的子模块时前面加上了一个“.”。
stock.py
stock.py子模块源代码详解
这个子模块的内部内容全部和股票相关。让我们把这一部分的代码分成多个部分来看。
# coding:utf8
import re
import datetime
import requests
import io
这个部分很基础,显示了编码用utf-8(python3程序很多时候不是太需要写这一行),引入了正则表达式模块re,日期时间模块datetime,常用爬虫模块requests以及处理输入输出流(I/O, Input/Output)的模块io。
def get_stock_type(stock_code):
"""判断股票ID对应的证券市场
匹配规则
['50', '51', '60', '90','110'] 为 sh
['00', '13', '18', '15','16', '18', '20', '30', '39', '115'] 为 sz
['5', '6', '9'] 开头的为 sh, 其余为 sz
:param stock_code:股票ID, 若以 'sz', 'sh'开头直接返回对应类型,否则使用内置规则判断
:return 'sh' or'sz'"""
assert type(stock_code) isstr, 'stock code need str type'
if stock_code.startswith(('sh', 'sz')):
return stock_code[:2]
if stock_code.startswith(('50', '51', '60', '90', '110', '113', '132', '204')):
return 'sh'
if stock_code.startswith(('00', '13', '18', '15', '16', '18', '20', '30', '39','115', '1318')):
return 'sz'
if stock_code.startswith(('5','6', '9', '7')):
return 'sh'
return 'sz'
这个函数定义的内容就是前文提到的get_stock_type(stock_code)了。这是用来判断用户提供的股票代码(stock_code参数)在哪个交易所上市的函数。
从函数体中可以看到,注释内容之后先有一个assert xxx is yyy这样的判断句。在这个函数体中,assert命令用于判断stock_code的类型是不是str的。如果不是的话,返回'sto