这是一篇关于Python量化的笔记~坑的时候有一种很奇怪的感觉,我对Python似曾相识,又觉得陌生。打游戏发现新的隐藏关卡带来的是喜悦,而python的坑带来的是自我怀疑,甚至可能是实实在在的经济损失,所以,坑,我们踩过的,一定带你绕过去。
下面让我们一起看看python隐藏的坑,排名不分先后。
1. Python量化之基础篇
基础的坑,最重要的是举一反三,最怕的是在黑板上老师写了‘一’,回家在笔记本上写一个横线就不认识这种事情。
忘记写冒号。在def,if,while,for等语句第一行某位输入”:”。
缩进要一致。避免在缩进时混合使用制表符和空格。
不要认为在原处修改对象的函数会返回结果。例如a = list.append(),a是不会被赋值的。
不要在变量赋值前就使用变量。例如a = b写这行代码时,b在此之前一定要被赋值过的。
函数调用一定要加括号。例如dataframe.dropna()。
不要写死循环。例如while True: 之后的代码块中没有跳出循环的代码。
判断两个变量是否相等用的是‘==’号。大多数初学者,觉得‘=’号就可以了。
写字符串,写各种样式的括号时注意他们是成对出现的。常见['a', b']这样的错误,然后觉得自己代码没有问题的初学者。
2. Python量化之进阶篇
有一句歌词唱的挺好的,“跨过这道山,越过那道岭,眼前又是一座峰”。基础的坑排完了,还会有更多,更隐藏的坑等着你去踩。(比较熟悉这个歌的同学,我觉得你大概率上是北方人,更具体点的话,是东北人)
2.1 赋值仅仅生成引用
a = [1, 2, 3]
b = a
这里你认为自己构建了两个相同的列表,准备用在不同的用途。然而当开开心心的进行接下来的其他操作时,比如,对a进行修改,就发生了其他的事情。
a[1] = 100000a
out: [1, 100000, 3]
b
out: [1, 100000, 3]
结果发现,本来希望只对a进行修改,结果发现b也受到了影响,其原因在于通过b = a的方式进行对b赋值,其实a、b指向同一个列表对象。我们可以通过查看a、b的内存地址或用is进行验证
print(id(a), id(b))
out: 124006856 124006856
可以看到a、b指向的其实是同一块内存
a is b
out: True
用is也检测出a和b完全就是一个东西的不同名字而已。
上面的赋值方法还是比较容易看出,因为有等号,那么下面的赋值方法可能就稍微难一点看出来了。
c = [1, a, 3]
c
out: [1, [1, 100000, 3], 3]
当对a修改时,c同样也会受到影响
a.append(100000)
a
out: [1, 100000, 3, 100000]
c
out: [1, [1, 100000, 3, 100000], 3]
所以,不要觉得写完了,print出来的东西看着和自己想的一样就万事大吉,不实际踩一下肯定不知道接下来有坑。
那么,如何