Python快速入门,从入门到放弃系列
开始之前
在开始之前,先讲讲学习方法。现在想学习任何一样东西,你只要稍微用心,网上基本都能找到你想要的资料,但是资料好找,大部分人找到了也只是收藏起来,说以后再看,然后就再也没有然后了。
另外,同样一份资料,不同的人学习起来效果也不尽相同,有的人一学就会,触类旁通;有的人却越学越痛苦,永远进度留在前几章。这里面最大的差别就是学习方法的问题。
按学习行为来分,学习其实就两类:被动学习 vs 主动学习。被动学习大部分的表现是听音频、去阅读、去看视频,但这个效果有数据表明并不好。主动学习则是把自己学到的东西,再去教给另外一个人。通过讨论、实践,真正的把内容掌握。所谓教学相长。
网上有很多大佬给初学者的建议,比如如何快速掌握一门编程语言。首先是克服对语言本身的恐惧,然后就是下面目录的步骤逐步前进,再逐步加深
现在网上有很多入门,我个人推荐的有廖雪峰的Python入门系列,以及B站有很多视频。我这里算是重复造轮子,然后基于自己的理解尽量写出10分钟可以快速入门的教程。因为我们的目的是量化交易,所以无关的就会尽量忽略,有兴趣的可以课外学习。
目录:
-
简介
-
安装
-
第一个程序
-
Python基础
-
函数
-
高级特性
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的有两个办法:
我的经验: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.
-
别指望速成,可以快速入门用起来,但是很快成为一个专家,那是很难的。
写到最后
写到这里的时候,无比佩服那些写技术书籍的人,我这里只是准备简单的入门,就觉得写起来很辛苦,你自己懂一个东西,和你把这个东西写清楚绝对是两码事。而那些大神,不光很精通,还能把技术原理说的很清晰,真是非常厉害。
另外我也是第一次准备这种入门级的教程,估计还是会很多地方遗漏,欢迎指正,我随时修改完善。
网友评论