大家仔细看看文章里用channel实现几种常用的同步锁的思路,没准儿哪次面试就碰上这样的面试官了呢。 今天,我将深入探讨Go语言channel和select语句的表达能力。...为了演示只用这两个原语就可以实现多少功能,我将从头开始用它们重写sync包。...sync包提供的同步原语的有哪些以及如何使用我们已经在之前的文章里介绍过了,所以这里不会再去介绍用channel实现的这些同步原语应该怎么用。...下面是用channel实现的WaitGroup同步原语,真正起到阻塞goroutine作用的是世代里的wait通道,然后通过用WaitGroup通道包装generation结构体实现WaitGroup的...有关通道和同步锁都适合解决什么种类的问题我们后面的文章再细说,今天这篇文章,需要充分理解Go语言通道的行为才能理解文章里的代码,如果有哪里看不懂的可以留言,只要时间允许我都会回答。
(most recent call last): File "", line 1, in IndexError: list index out of range keyerror...one'] '1' >>> dict1['six'] Traceback (most recent call last): File "", line 1, in KeyError...print("领绕我错了,报错了") ... 领绕我错了,报错了 >>> 根据不同的异常设置多个except >>> try: ... sum = 1 + "1" ......f = open("date.txt",'w') ... for each_line in f: ......出错了:not readable with版 >>> try: ... with open('date.txt','w')as f: ...
日内动量因子M0:每日收盘价和开盘价算的收益率,15日合成 隔夜反转因子M1:今开和昨收计算的收益率,15日合成 M:M0和M1的rank求和 这里需要说明的是,合成上,报告说的比较模糊,这里我是用复利累乘的方法合成的...从报告结论来看,M明显优于传统动量因子,我自己测试结果来看,首先,申万一级指数上M确实要优于传统动量因子,但中信行业上只有月度上有增强,周度增强不是很明显。...此外M0和M1中,起作用的主要是M0,如果用每月的收益率做动量,效果明显好于15日的情况,最后,周频效果好于月频,量价因子衰减很快。 复制结果 申万一级行业-月度-M0 ?...== 'mom15'].set_index('tradedate').plot(figsize = (10,5)) nav_m.loc[nav_m.factor == 'M0'].set_index...() else: return datetime.date(int(str(x)[:4]),int(str(x)[4:6]),int(str(x)[6:])) # 隔夜收益率
建议阅读 6 分钟 本文是听说你会玩 Python 系列的第四篇 1 - 六酷技巧 2 - 99% 的人会做错的题 3 - 深挖变量 4 - LBYL vs EAFP 引言 写了 Python 这么久,是不是对...后者是飘逸型,相信程序大概率对的,错了再处理,代码很 pythonic。 还是不知道在说什么?看例子吧。...虽然达到了目的,我相信你已经觉得上面代码不好看了吧,而且 if 语句中 len(l) >= 3 里的 3 还需要 hard-code。...用 try-block 语句。报错的话应该就是键不存在字典中,这时再处理 KeyError 就完事了。...4 总结 总结一下: LBYL 是先检查再执行,用 if-else 语句 EAFP 是不检查出了错再处理,用 try-except 语句 Python 更推荐 EAFP,因为 它可读性更强。
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们在使用pandas分析处理时间序列数据时...']) # 以月为统计窗口计算每月股票最高收盘价 ( AAPL .set_index('date') # 设置date为index .resample('M') # 以月为单位...小时T T或min 分钟 S 秒 L或 ms 毫秒 且这些规则都可以在前面添加数字实现倍数效果: # 以6个月为统计窗口计算每月股票平均收盘价且显示为当月第一天 ( AAPL .set_index...resample()非常贴心之处在于它会自动帮你对齐到规整的时间单位上,譬如我们这里只有交易日才会有记录,如果我们设置的时间单位下无对应记录,也会为你保留带有缺失值记录的时间点: ( AAPL .set_index...我们可以为细粒度的时间单位设置区间闭合方式,譬如我们以2日为单位,将closed设置为'right'时,从第一行记录开始计算所落入的时间窗口时,其对应为时间窗口的右边界,从而影响后续所有时间单元的划分方式: ( AAPL .set_index
value: In [22]: dic['a'] = 2 In [23]: dic Out[23]: {1: 123, 'a': 2, ('a', 'b'): 'hello'} 查看是不是在字典里...39]: dic.pop(2) --------------------------------------------------------------------------- KeyError...most recent call last) in () ----> 1 dic.pop(2) KeyError...将该字典按照ASCII码的值排序 print sorted(dict1.iteritems(), key=lambda d:d[1], reverse=False) 2) 有一个字母的ASCII错了...用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法) dict2 = dict(zip(string.uppercase,range
好,接下来我们什么也不设置,直接运行,看下结果: python3 main.py 结果如下: raise KeyError(key) from None KeyError: 'VAR1' 直接抛出来了一个错误...我们这次再运行一遍原来的命令: python3 main.py 结果如下: raise KeyError(key) from None KeyError: 'VAR1' 嗯,又抛错了。...其实并不是,其实这个 export 只对当前的命令行运行环境生效,我们只要把命令行关掉再重新打开,之前用 export 设置的环境变量就都没有了。...那又有同学会问了,我要在每次命令行运行时都想自动设置好环境变量怎么办呢?...更安全的获取方式 但是上面的这种获取变量的方式实际上是非常不友好的,万一这个环境变量没设置好,那岂不是就报错了,这是很不安全的。
试图访问字典里不存在的键 NameError 使用一个还未被赋予对象的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了) TypeError 传入对象类型与要求的不符合...python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,谁会去用一个运行着突然就崩溃的软件。...') elif len(num1) == 0: print('输入的是空,就执行我这里的逻辑') else: print('其他情情况,执行我这里的逻辑') ''' 问题一: 使用if...我们是不是要用except把所有的异常都列一遍呀.那样太麻烦了,Python也想到了这个,所以Python提供了一个万能异常:Exception,他可以捕获任意异常 s1 = 'hello' try:...ValueError as e: print(e) #except Exception as e: # print(e) else: print('try内代码块没有异常则执行我'
Python大数据分析 ❝本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 我们在使用...']) # 以月为统计窗口计算每月股票最高收盘价 ( AAPL .set_index('date') # 设置date为index .resample('M') # 以月为单位...H 小时T T或min 分钟 S 秒 L或 ms 毫秒 且这些规则都可以在前面添加数字实现倍数效果: # 以6个月为统计窗口计算每月股票平均收盘价且显示为当月第一天 ( AAPL .set_index...resample()非常贴心之处在于它会自动帮你对齐到规整的时间单位上,譬如我们这里只有交易日才会有记录,如果我们设置的时间单位下无对应记录,也会为你保留带有缺失值记录的时间点: ( AAPL .set_index...我们可以为细粒度的时间单位设置区间闭合方式,譬如我们以2日为单位,将closed设置为'right'时,从第一行记录开始计算所落入的时间窗口时,其对应为时间窗口的右边界,从而影响后续所有时间单元的划分方式: ( AAPL .set_index
KeyError:当试图访问字典中不存在的键时 In [12]: dic = {'key1':'var1', ...: 'key2':'var2'} In [13]: dic['...: 'key' 在字典dic中,我们并没有key这个键,若我们试图访问不存在的键就会提示 KeyError: 'key',此时我们复查key是否存在即可。...") from None KeyboardInterrupt: Interrupted by user 当程序执行过程中,我们使用 Control+C 或 Delete时,就会出现中断程序的提示,我常常在程序执行过程中想复制部分打印信息的时候错使用...遇到报错不要慌,对于新手来说,常见的就是先检查基础语法对不对、标识符是不是用了中文,变量名的拼写是不是错了,变量名是不是没定义就调用了,缩进是不是没整对,函数方法是不是用错了,想引入的库是不是没有安装等等...UnicodeEncodeError Unicode 编码时错误 UnicodeTranslateError Unicode 转换时错误 Warning 警告的基类 DeprecationWarning 关于被弃用的特征的警告
当时我的想法是:我想更加有意识地制作图表,以便直观地向观众传达信息。我的意思是,不要仅仅为了理解正在发生的事情而过度消耗他们的脑力和时间。...我曾经认为从 Matplotlib 切换到 Seaborn,最后切换到 Plotly 可以解决美学问题。确实,我错了。可视化不仅仅是美学。...下面是我试图从 Cole Nussbaumer Knaflic 的《用数据讲故事》中复制两个可视化,它们真正激励我改变我的可视化方法。它们看起来干净、优雅、目标明确。...如果您正在寻找对出色的可视化背后的概念的深入解释,请查看“用数据讲故事”,每一页都是值得您花时间的瑰宝。如果您正在寻找特定于工具的实用建议,那么您来对地方了。...=lambda df_: pd.to_datetime(df_.match_date, infer_datetime_format=True)) .assign(home_team=lambda df
1.假如我想要mock库中date对象,但是我只想mock today()这个方法,就是today()返回我想要的结果,但是其他的date的初始化方法不能有所改变。...= {'method.return_value':3,'other.side_effect':KeyError} mock.configure_mock(**attrs) mock.method()...# return 3 mock.other() # return KeyError 3.mock其他module中使用的函数 假如test_fuction_uu.py中要测试fuction_uu,...但是fuction_uu调用了myfuction,我想要mock这个myfuction。...文档上说用unittest2中的cleanup函数可以避免这个问题。
我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。...Company(["11", "22", "33"]) #hasattr判断类有没有某种属性,方法也是类的属性 print(hasattr(com,"__len__")) #True #虽然用hasattr...可以判断,但正确的方式是定义一个抽象基类 #我们在某些情况下希望判定某个对象的类型,可以用抽象基类 from collections.abc import Sized print(isinstance...): year, month, day = tuple(date_str.split("-")) # 静态方法不好的地方是采用硬编码,如果用类方法的话就不会了...# 类方法 date_str = '2018-05-09' new_day = Date.from_string(date_str) print(new_day) # 2018
我的完整施工计划 目前已完成以下四期Python专题: 1我的施工计划 2数字专题 3字符串专题 4列表专题 5流程控制专题 今天讨论 Python 编程风格,如何写出更加Pythonic的代码是本篇讨论的话题...在此我强烈建议大家都去读一下google编写的python规范,我找了一个不错的pdf翻译版本,下面是目录截图: 同时,我们可以使用一些好用的小工具辅助我们写出更加符合习惯的Python代码,如flake8...知道在编程方面的指代意义就行:首先相信程序会正确执行,然后如果出错了我们再处理错误。...3.1 程序每次运行都要检查 程序每次运行都要检查,不管程序是不是真的会触发这些异常。...但是,如果用try-catch,那么try代码块里面可以只写程序的逻辑,在except里面处理所有的异常。
Hello,大家好,我是陈晨~ 今天我来分享关于8 个常用pandas的 index设置 1. 将索引从 groupby 操作转换为列 groupby分组方法是经常用的。...有两种方法可以完成所需的操作,第一种是用reset_index,第二种是在groupby方法里设置as_index=False。个人更喜欢第二种方法,它只涉及两个步骤,更简洁。...使用现有的 DataFrame 设置索引 当然,如果已经读取数据或做完一些数据处理步骤后,我们可以通过set_index手动设置索引。...set_index方法默认将创建一个新的 DataFrame。如果要就地更改df的索引,需要设置inplace=True。...以上几个高频的操作都是有索引设置的,建议大家平时用的时候养成设置索引的习惯,这样会节省不少时间。 8.读取时指定索引列 很多情况下,我们的数据源是 CSV 文件。
偏度因子:用上文高低价计算的rHL计算偏度作为偏度因子 峰度因子:用今开昨收计算的收益率计算峰度作为峰度因子 具体行业轮动策略如下 回测区间:2006.01-2019.06 频率:月度 标的:中信一级行业指数...结果如果做一个表格的话,会看的更清楚一些,这里我就直接用图解释了: 首先动量因子、波动率因子都是5%显著的,只加入偏度的话,两个因子都在10%上显著,偏度在5%上显著,波动率的显著性降低较多,说明偏度包含的信息与波动率重复较多...() else: return datetime.date(int(str(x)[:4]),int(str(x)[4:6]),int(str(x)[6:])) # 隔夜收益率...groupby(factors_m.tradedate).rank(ascending = False) """ 因子测试 """ groups = 5 startdate = datetime.date...(2006,1,1) enddate = datetime.date(2019,6,30) fm = factors_m.loc[(factors_m.tradedate>= startdate) &
bfill表示用所在索引1206的后一个有效行填充,ffill为前一个有效行。...=df[0:5][['Weight','Height']].index,columns=df[0:5][['Weight','Height']].columns,method='ffill') 3. set_index...和reset_index 先介绍set_index:从字面意思看,就是将某些列作为索引。...np.random.randn(24).reshape((3,8))) df_.set_index(list(range(df_.shape[0]))) # 传入参数是 range(df_.shape[0] 时会报错: # KeyError...: 'None of [range(0, 3)] are in the columns' # 当给 set_index 传入的是list的时候, 就会把列名和list一致的列设置为索引 看参数说明,并不一定需要
END 当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块...ipython-input-18-beeefae3bbbc> in () 8 bar('0') 9 ---> 10 main() #调用main()出错了...beeefae3bbbc> in foo(s) 1 def foo(s): ----> 2 return 10 / int(s) #原因是return 10 / int(s)这个语句出错了...setUp()和tearDown()方法有什么用呢?...只有测试异常的时候,可以用...表示中间一大段烦人的输出。
试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameError 使用一个还未被赋予对象的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了...试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameError 使用一个还未被赋予对象的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了...当适当的使用assert时,这是未来,但是当assert不恰当的使用时,它会让代码用-O执行时出错。 那什么时候应该使用assert?...我有时在代码里使用assert False来标记没有写完的代码分支,我希望这些代码运行失败。尽管抛出NotImplementedError可能会更好。)...在以上两种情况下会很有意思,当你比较肯定代码但是不是绝对肯定时。可能你会错过一些非常古怪的情况。在这个情况下,额外的运行时检查能帮你确保任何错误都会尽早地被捕捉到。
第 6 行将日期 (date) 和时间 (time) 合并,用 assign 函数将合并栏起名为 date_time 栏。...第 8 行用 drop 函数把date 和 time 栏删掉,因为已经有 date_time 栏了,信息重复了。...第 9 行把用 set_index 函数把 date_time 栏作为 index。 五行代码就把处理完了,Python 写起来真的很方面。现在有个问题是数据太大了,用快 7000000 条数据。...第 10 行就是用 to_parquet 做上面说的事,唯一需要注意是要选取 engin 参数为 'pyarrow' 或者 'fastparquet'。运行报错了的先装 pyarrow 工具包。...Dollar bar 折线图比起 tick 折线图是不是没那么多上下波动,少了好多噪音。
领取专属 10元无门槛券
手把手带您无忧上云