量化策略一Python

1、背景

Python使用py文件。

Python3.6.5下载地址:https://www.python.org/downloads/release/python-365/

Notepad下载地址:https://notepad-plus-plus.org/download/v7.5.6.html

 

2、常用函数与符号

2.1函数

input()输入

print()打印

len()查看对象长度

int()将对象转换为整数类型

list()转换为列表类型

range()生成一个整数序列,由0开始算起

add()增加元素

remove()删除元素

exit()退出

 

2.2格式符号

: 当语句以冒号结尾时,后面缩进的语句被视为代码块

\ 转义字符。\n换行、\t制表符

‘’’ 表示多行内容

% 占位符。%s 用字符串替换、%d 用整数替换、%f 用浮点数替换。后跟%()赋值,只有一个%占位时()可省略。%% 表示一个普通字符%

 

2.3计算符号

/ 除。// 整除、% 显示余数

& 交集、| 并集

 

3、概念

3.1数据类型

整数(int),浮点数(float),字符串(str),布尔值(bool),空值(NoneType)。

type()查看数据类型

布尔值的逻辑符号:and,or,not。

 

3.2变量

变量不可以数字开头。

习惯上使用大写的变量名来表示一个常量。

 

3.3数据结构

列表(list),元组(tuple),字典(dict),(set)。

3.3.1列表list:有序集合,用[]标示。

>>> a=[1,2,3,4,5,6]

>>> a[1]#取第二个元素,单独取值时元素位置由0开始计

2

>>> a[-1]#取倒数第一个元素

6

>>> a[:3]#从前取至第三个

[1, 2, 3]

>>> a[-4:]#从后取之第四个

[3,4, 5, 6]

>>> a[1]=7#替换

>>> a

[1, 7, 3, 4, 5, 6]

>>> a.append(8)#在末尾增加一个元素

>>> a

[1, 7, 3, 4, 5, 6, 8]

>>> a.insert(3,2)#在第四个位置插入2

>>> a

[1, 7, 3, 2, 4, 5, 6]

>>> a.pop()#删除指定位置的元素,不指定就删除最后一个

6

>>> a

[1, 7, 3, 2, 4, 5]

>>> del a[1]#删除元素

>>> a

[1, 3, 4, 5, 6, 8]

3.3.2元组tuple:与list类似,但不可修改,只能查找。用()标示。

定义只有一个元素的tuple时,()内元素后要加“,”,否则会被错误识别为一个变量。显示时也同样用“,”标示。

>>> t=(1)

>>> t

1

>>> t=(1,)

>>> t

(1,)

3.3.3字典dict:以(key-value)对存储,查找速度快。按key存储,无序。用{}标示。dict的key必须是不可变的对象,list类型不能做key。

>>> a={“000001″:4,”000002″:5,”000003”:6}

>>> a

{‘000001’: 4, ‘000002’: 5, ‘000003’: 6}

>>> a[“000002”]

5

>>> a[2]

Traceback (most recent call last):

File “<stdin>”, line 1, in <module>

KeyError: 2

>>> a[“000004”]=7#增加或替换

>>> a

{‘000001’: 4, ‘000002’: 5, ‘000003’: 6, ‘000004’: 7}

>>> a.get(“000005”,-1)#取值,如果没有符合条件的话返回-1

-1

>>> “000004” in a#查看是否存在key为000004

True

3.3.4set:不重复元素集,无序。不可放入可变对象。

 

3.4逻辑条件与循环

3.4.1if和else:if是条件,else是排除条件,elif是else if的缩写,次级条件。:号后引导执行内容。

>>> s=input(“birth:”)

>>> birth=int(s)#s转为整数

>>> if birth<2000:

print(“00前”)

else:

print(“00后”)

3.4.2for in循环:将in后面每个元素带入for后的变量中,执行缩进块的程序。

>>> sum = 0

>>> for x in range(101):#0至100的整数循环赋值给x

sum = sum + x

>>> print(sum)

3.4.3while循环:只要条件满足就继续循环,到不能满足条件就退出循环。

>>> sum = 0

>>> n = 99

>>> while n > 0:#只要n大于0,就循环累加。n从99开始每次减2

sum = sum + n

n = n – 2

>>> print(sum)

3.4.4break和continue:break直接退出循环。Continue跳过当前循环,开始下一个循环,通常配合if语句使用。

 

3.5函数

查看函数:https://docs.python.org/3/library/functions.html#abs,或者直接使用help()函数。

可以将函数作为对象赋予一个变量。

>>> a=abs

>>> a(-11)

11

3.5.1定义函数

定义函数使用def语句。用from文件名import函数名来导入py文件中的函数。

pass语句代表忽略,什么也不做。

>>> def myfun(x):

if not isinstance(x,(int,float)):#检查输入是否为整数或浮点数类型

raise TypeError(“bad operand type”)#不满足条件就返回信息

if x>10:

return x-10

else:

return x+10

>>> myfun(6)

16

>>> myfun(24)

14

>>> myfun(“6”)

Traceback (most recent call last):

File “<stdin>”, line 1, in <module>

File “<stdin>”, line 3, in myfun

TypeError: bad operand type

3.5.2参数

默认参数:变量=默认值。默认参数必须指向不变的对象。默认参数需在必须参数后面。

可变参数:参数个数可变,在参数前加*。可变参数传输list或tuple。习惯写法*args。

关键字参数:限制传入的参数名,同时提供默认值。参数前加**,接收dict。习惯写法**kw。

 

《量化策略》系列文章的部分内容来自于优矿网(UQER)的量化学堂和量化社区。