【全新量化入门系列3】python基本语法与变量

发布于: 雪球转发:2回复:1喜欢:25

本文是《量化交易零基础入门教程》中的一篇,点击文末阅读原文可查看该系列详情。

摘要

python是什么

python的基础语法

变量与赋值

Python 保留字符

打印 print

全局变量

基本数据类型-数字与字符串

算术运算

查看数据类型 type

数据类型-列表与字典

前言

前文讲解了量化交易中策略运行的基本框架以及实现方法,其中虽然给出一个简单策略的完整代码,但只是初步认识,想完全看懂并自己写需要掌握python这门编程语言。

一般常见的python教程都是针对程序员的,所以很多内容在做量化写策略时都往往用不到。而本教程则是用量化的情景从零讲解python编程,所以会更适合想学做量化策略的朋友。

我们将用前文策略代码为例进行讲解,如下:

Python是什么?

python是与计算机交流的一种语言。我们把想让计算机做的事情用python写出来,就如同前文那样的一行行代码,从而,计算机才能理解并去按我们的想法去做。这是一种通俗易懂的理解,但已经足够了。想了解更多专业角度的介绍可以自行搜索了解哦。

Python2与Python3区别是什么?


Python语言本身也是如同自然语言般在不断变化的,升级到python3.0版本时出现了较大的变化,以至于python分为了python2与python3两个不互相兼容的版本。

由于世界上有很多流行功能函数库对python3的支持并非很好,而有些量化过程中策略或系统可能会用到,所以我们用python2来写策略,而且聚宽做策略回测代码也只支持python2。(聚宽投资研究功能中支持使用python3)

不过对写策略来说,python2与python3的区别并不明显。具体区别见python官方文档。

Python的基础语法

大小写敏感

比较容易理解,就是字母的大写与小写是区分的,所以如果你把前文例子的代码中的若干个字母从小写变成大写,系统会报错。

要用英文符号

之前讲过,冒号、逗号、分号、括号、引号等各种符号必须用英文的,中文的会不识别而报错。

注释

为了让代码的便于交流理解,通常都会在代码中写入注释用以说明代码,注释是给人看的,所以计算机会忽略(顺便提下,空行也会被忽略),用中文记录思路也没关系。强烈建议养成写注释的好习惯。注释的方法有以下两种;

(#)会把所在行的其后的所有内容设定为注释;

例子如下:

三个单引号(''')或三个双引号(""")会把之间的内容设定为注释,以单引号为例;

例子如下:

行与缩进

之前讲过,代码缩进的时候要对齐,缩进方法是四个空格或一个tab键(推荐用tab),不要混着用。比如例子中周期循环部分除第一句都是要缩进的;

缩进的含义是这样的,有些语句是要包含其他连续若干条语句才成立的,这些语句通过缩进表示这种被包含的关系;

例子如下:


一行写多条语句

一般习惯是一行只写一条语句,如果要一行写多条语句要用分号隔开,不常用但要认识,如下,我把例子中原本的第二行与第三行写在一行了(比较长排版可能会自动换行显示)。

例子如下:

一条语句写在多行

有时一条语句可能就会很长,为了便于阅读会用斜杠(不是除号,是从左上到右下的)分隔后写在多行。如下例子的第二行代码被斜杠分隔后写在两行。

例子如下:

量变与赋值

我们在之前的例子中见过这样一行语句:

当时没细讲,含义是把'000001.XSHE'这个字符串赋值给名为g.security的变量(security是英文证券的意思)。

变量通俗的理解是,计算机中存放数据的有名字的盒子;另外变量名字是在赋值语句中定义的。

赋值,即赋予变量数据,写法是等号,含义是把等号右边的数据(或变量里的数据)放入左边的变量中去。


用法如下:

Python保留字符

有些名字被系统所占用不能用作变量名,或任何其他标识符名称;

用法如下:

打印print

print是非常常用而重要的语句,它能把变量里的内容在日志中打印输出出来,通过它我们能了解程序运行的细节。

用法如下:

如下图,把代码放到周期循环里后,点编译运行执行代码,每个交易日都打印了a、b,因为运行了两个交易日,所以打印了2组a、b。注意,后面的例子都可以这个方法来执行。

print也可以直接打印数据,如下:

为了能在日志中看出打印内容的含义,可以采用如下方法,此方法经常用于记录策略的运行情况。

例子如下:

全局量变

你可能会发现初始化里的变量与周期循环里的变量是不通的;

比如你运行如下的代码会报错:

报错信息如下:(含义是a没有被定义)

为了让变量能在全局被使用,需要在变量前加'g.',使之成为全局变量。所以,把刚刚的代码中的a改为全局变量就能正确运行了。

例子如下:

基本数据类型-数字与字符串

对计算机来说,不同的数据往往需要不同的操作与存储要求,因此在赋值时python会自动为数据分类,从而对不同的数据采取不同的应对方法。比如,数字可以数学运算,但文本就不可以,字母可以转换大小写,数字不行。

数字(Number)

数字就是数字,可以做诸如加减乘除的计算操作,具体可分为多种类型,比如股价一般就是浮点数型。因为在赋值变量的时候,python会自动调整变量类型。所以需要关注数字类型的时候并不多。

数字具体分为int(整数)、float(浮点数,即 包含小数位)、bool(布尔值,即True和False,True是1,False是0)等。

例子如下:


字符串(String)

字符串可以理解为文本或文字,不能像数字进行数学运算,有其特别的操作,比如股票代码、股票名称一般都是字符串;

Python 可使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须的相同类型的。如下,不妨用刚讲的print打印下看看。

例子如下:

算术运算

数字变量之间是可以进行算术运算的;

用法如下:

注意如果两个整数类型进行计算,结果默认还是整数;

用法如下:

查看数据类型type

type语句可以,告诉我们变量里存放的是什么类型的数据。

用法如下:

数据类型-列表与字典

为了更方便的取用数据,在最基本的数据类型-数字与字符串基础上,还有其他的数据类型,他们往往具有更复杂的结构更便捷的功能。比如接下来要介绍的列表(List)、字典(Dictionary),不过这里的内容实在是繁多,此处只介绍最常用的内容,其他内容后续用到再讲。

列表(list)

列表数据类型能方便我们操作一组数据。比如一组股价、一组股票名等。

建立方法如下:

选取list中的某个元素的用法如下:

选取list中的一段的用法如下:

字典(dictionary)

字典数据类型同样能方便我们操作一组数据,与list不同的是我们可以为这组数据自定义地建立索引。

建立方法如下:

选取dict中的某个key的值方法如下:

选取dict中的所有key与所有value:

自测与自学

实践下本文中的各个例子;

了解下list与dict的更多用法。参考资料:列表、字典;

以下代码打印结果是?

以下代码的打印结果是?


全部讨论

湖景兔兔2019-02-10 09:46

学习了