投资理财金融·投资·理财

量化投资之1:Python入门

2021-02-02  本文已影响0人  bluescorpio

Python快速入门,从入门到放弃系列

开始之前

在开始之前,先讲讲学习方法。现在想学习任何一样东西,你只要稍微用心,网上基本都能找到你想要的资料,但是资料好找,大部分人找到了也只是收藏起来,说以后再看,然后就再也没有然后了。

另外,同样一份资料,不同的人学习起来效果也不尽相同,有的人一学就会,触类旁通;有的人却越学越痛苦,永远进度留在前几章。这里面最大的差别就是学习方法的问题。

按学习行为来分,学习其实就两类:被动学习 vs 主动学习。被动学习大部分的表现是听音频、去阅读、去看视频,但这个效果有数据表明并不好。主动学习则是把自己学到的东西,再去教给另外一个人。通过讨论、实践,真正的把内容掌握。所谓教学相长。

网上有很多大佬给初学者的建议,比如如何快速掌握一门编程语言。首先是克服对语言本身的恐惧,然后就是下面目录的步骤逐步前进,再逐步加深

现在网上有很多入门,我个人推荐的有廖雪峰的Python入门系列,以及B站有很多视频。我这里算是重复造轮子,然后基于自己的理解尽量写出10分钟可以快速入门的教程。因为我们的目的是量化交易,所以无关的就会尽量忽略,有兴趣的可以课外学习。

目录:

  1. 简介

  2. 安装

  3. 第一个程序

  4. Python基础

  5. 函数

  6. 高级特性

0. 简介

Python是一门非常强大的脚本语言,我们选择它作为工具,一是比较容易入门,二是因为有太多的库可以支持,只有想不到,没有做不到。使用Python开发,可以直接把这些现成的库拿来为我所用,而不比从头开发。我们选择Python做量化交易的编程语言,也是因为它容易上手,且功能强大。

1. 安装

1.1 安装Python

本节只涉及Windows和Mac安装,大部分人也不会在Linux上开发。另外考虑到Python3.X越来越流行,直接选一个。

Windows,根据你电脑系统的不一样,从官网直接下载对应的版本,然后执行对应的exe文件即可。现在的安装文件比早期做的好太多,一路Next下去即可。记得勾上Add Python 3.X to PATH

Mac:Mac带的Python默认是2.7的,如果要安装3.X的有两个办法:

  1. 直接从官网下载最新Python3.X,双击安装即可。

  2. 如果安装了HomeBrew,直接通过命令brew install python3安装即可。

我的经验:Windows里面还是各种坑比较多,不过大部分应该还是会习惯于Windows,我自从切换到Mac之后,已经感觉无法再切换回Windows了。因为在Mac下面配置开发环境简直太轻松了。

1.2 验证安装是否成功

由于我工作电脑是Mac,所以以下截图是以Mac为例的:

安装成功后,打开终端(Terminal),出来以下界面,然后敲入python3

则证明安装成功了。>>>这个提示符表明我们已经在Python交互环境了,可以输入Pyton代码,然后马上得到结果,这个做计算器的话,非常方便。

2.第一个程序

工欲善其事必先利其器,所以有一个顺手的工具也非常重要,这里我推荐的是PyCharm,到官网下载电脑对用的版本就好了。对一般用户来说,使用Community绰绰有余了。

在打开PyCharm界面,点击Create New Project,建立一个项目,以后代码、数据全部放在这个项目内。

[图片上传失败...(image-806511-1612233205541)]

然后在项目内新建一个文件叫hello.py,然后输入print("hello world"),右键—run hello。

如果下面出现了下图,就表明你已经顺利的写了你第一个Python程序。

[图片上传失败...(image-4723b7-1612233205541)]

在《Learn Python 3 the Hard Way》里面提到,代码最好要手敲,而不要复制粘贴,因为在敲的过程中可能会犯一些错误,只有趟过这些坑,才会尽快熟悉。

3. Python基础

3.1 数据类型

Python支持整数、浮点数、字符串、布尔值、列表、字典等数据类型。

整数:Python可以处理正负整数,也包括其他进制的数字。

浮点数:带小数点的数字

字符串:含在单引号''或者""之间的任意字符串。字符串可以使用+操作。注意两个字符串之间才能用+。如果是不同的数据类型,比如字符串和整数之间用+进行连接,会报操作不支持的错误,解决办法就是把整数使用str()改变为字符串。

布尔值:Python里面,布尔值只有两个True和False(注意大小写)。布尔值的计算使用and、or和not。

空值:None,这是Python里面一个特殊的值。

3.2 变量/常量

变量就是在程序中使用的一个变量名,比如你需要一个字段记录名称,可以顶一个变量叫name

常量就是不能变的变量。一般全部大写来表示。比如PI

3.3 列表和元祖

在Python中,列表是一种有序集合,元素以,隔开。可以随时添加、删除里面的元素。len()可以获得列表内元素的个数。我们使用索引去访问列表中的元素,要注意的是,计算机中索引是从0开始计数的,所以索引0对应的是第1个元素。最后一个元素的索引是len(alist) - 1。如果超出这个范围,则会报IndexError错误。

列表还支持负索引,即alist[-1]代表最后一个元素。

列表还支持切片操作。

我们可以使用append()方法在列表尾部追加元素,也可以使用insert()把元素插入到指定位置。

使用pop()删除尾部的元素,如果要删除指定的元素,则使用pop(index)方法。

元祖和列表基本一样,唯一不同的地方是元祖一旦初始化就不能修改。适合作为字典的key。

3.4 字典/ Set

Python中的字典使用键值存储。字典中,键值必须是不可变元素,但是值可以为任意Python对象。

常用方法就是d.get(key, default = None)

Set是一组键的无序集合,但是不存储值。Set中不会出现重复的元素,可以利用这个特性去过滤元素。

3.5 条件判断

Python里面使用if做条件判断,基于一定的条件,判断是否执行特定的一段代码

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

这里要注意的是:Python不使用 {} 将 if 语句控制的区域包含起来。Python使用的是缩进方法。

elif 的个数没有限制,可以是1个或者多个,也可以没有。

else 最多只有1个,也可以没有。

3.6 循环

Python里面的循环主要是实现重复计算,进行循环操作。

一种是for..in循环,依次进行处理。for 循环会遍历完<sequence>中所有元素为止

for <variable> in <sequence>:
    <indented block of code>

另一种是while循环,只要满足条件,就不断循环,条件不成立,就退出循环。

Python会循环执行<statesments>,直到<condition>不满足为止。

while <condition>:
    <statesments>

在循环里面,break可以提前退出循环, continue则是用来跳出当前循环,直接进行下一次循环。一般要搭配if语句进行判断使用。

4. 函数

简单定义函数就是,通常接受输入参数,实现一定的功能,并有返回值。

调用内置函数,直接调用对应的函数并传入正确的参数,即可达到你的目的。

Python是使用以下方式来调用方法:

对象.方法(参数)。

定义函数

def add(x, y):
    """Add two numbers"""
    a = x + y
    return a

函数通常有以下几个特征:

使用函数

使用函数时,只需要将参数换成特定的值传给函数。

比如:

add(2, 3)
add('test', 'str') 

5. 高级特性

5.1 切片

分片用来从序列中提取出想要的子序列,其用法为:var[lower:upper:step]

其范围包括 lower ,但不包括 upper ,即 [lower, upper), step 表示取值间隔大小,如果没有默认为1。

切片主要是用来截取一个列表的部分元素,比如一个列表l = [1, 2, 3, 4, 5], 如果去取三个元素,就使用l[0:3],就可以得到[1, 2, 3],切片操作是左闭右开,也就是说包括左边那个元素,但是不包括右边那个元素,这里的3只的是index=3,也就是第四个元素。

在列表中,我们可以用负数index,在切表运算中,同样可以这么操作,比如l[-2:]就是指从倒数第二个元素取到最右边的所有元素。

一个技巧,如果我们想复制出一个新的列表,而不影响原来的列表,可以使用l[:]

要注意的问题

通过上面的顺序,可以掌握Python基本的用法,但是学无止境,要想更精通,那就多练多学习。

下面是一些要注意的问题:

写到最后

写到这里的时候,无比佩服那些写技术书籍的人,我这里只是准备简单的入门,就觉得写起来很辛苦,你自己懂一个东西,和你把这个东西写清楚绝对是两码事。而那些大神,不光很精通,还能把技术原理说的很清晰,真是非常厉害。

另外我也是第一次准备这种入门级的教程,估计还是会很多地方遗漏,欢迎指正,我随时修改完善。

上一篇 下一篇

猜你喜欢

热点阅读