量化投资之1:Python入门

作者: bluescorpio | 来源:发表于2021-02-02 10:34 被阅读0次

    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
    
    

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

    • 使用 def 关键词来定义一个函数。

    • def 后面是函数的名称,括号中是函数的参数,不同的参数用 , 隔开, def foo(): 的形式是必须要有的,参数可以为空;

    • 使用缩进来划分函数的内容;

    • docstring 用 """ 包含的字符串,用来解释函数的用途,可省略;

    • return 返回特定的值,如果省略,返回 None 。

    使用函数

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

    比如:

    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基本的用法,但是学无止境,要想更精通,那就多练多学习。

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

    • 一开始不要陷入底层逻辑和细枝末节,比如你学习函数,一开始你就学会如何定义函数,如何调用函数就可以了。至于里面参数的各种类型,到底是值传递还是引用传递,开始的时候都可以先忽略。

    • 要系统性学习,找到一个整套的课程或书籍学习,不要利用网上的文章进行系统性学习,如果你需要解决某个特定问题,可以到网上查。

    • 目标:能用起来,程序能跑通。Done is better than perfect.

    • 别指望速成,可以快速入门用起来,但是很快成为一个专家,那是很难的。

    写到最后

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

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

    相关文章

      网友评论

        本文标题:量化投资之1:Python入门

        本文链接:https://www.haomeiwen.com/subject/bgoetltx.html