2.3 Python中的变量和数据类型
变量其实是内存空间中的值,在创建变量时,Python会自动识别值的数据类型,并且根据数据类型将变量分配到指定的内存空间中。Python中变量的数据类型包括数字、字符串、列表、字典等。
2.3.1 变量
Python中的变量不需要声明,但每个变量在使用之前必须赋值。在给变量赋值后,该变量才会被创建。使用“=”符号给变量赋值,“=”符号左边为变量名称,右边为存储于变量中的值,示例代码如下:
输出结果如下:
上述代码分别定义了3个变量,将3.1415926535897、"圆周率"、2019分别赋给变量pi、name、year,最后使用Log()函数将这3个变量打印到日志中。
2.3.2 标准数据类型
Python中的变量仅仅只是一个名字(name),它关联着内存空间中的一个数据(object)。而变量的数据类型实际上是该变量关联在内存空间中的数据(object)的数据类型。Python 3有6种标准数据类型,分别为Number(数值)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)。在编写策略代码时,常用的数据类型有Number(数值)、String(字符串)、List(列表)、Dictionary(字典)。下面重点讲解这几种数据类型。
2.3.3 Number(数值)
Number数据类型主要用于存储数字,常用的Number数据类型有int(整型)、float(浮点型)。int型数据就是不带小数点的数字,正整数、负整数和0都是int型数据。Number是不可变数据类型,Number变量的值一旦改变,就意味着需要重新分配内存空间。
注意:Python中的布尔(bool)类型只有两个值,分别True与False(注意:首字母要大写),数字1和0可以分别用于表示True和False。
定义Number变量的示例代码如下:
Python是动态编程语言,通常需要判断对象的数据类型,可以使用内置的type()函数查询对象的数据类型,示例代码如下:
输出结果如下:
在这个例子中,分别定义了一个int型(整型)变量和一个float型(浮点型)变量,Log()函数打印了type()函数返回的数据类型。无论是int型变量,还是float型变量,都可以用于表示数字,可以进行计算。
注意:在int型变量、float型变量混合计算时,Python会先将int型变量转换为float型变量。对于数字的除法,如果使用运算符“/”,则返回一个浮点数;如果使用运算符“//”,则返回一个整数。
2.3.4 String(字符串)
字符串是若干个字符的集合,是表示文本的数据类型,Python中的字符串用英文单引号''或英文双引号""括起来,可以使用反斜杠“\”转义特殊字符。字符串的第1个索引值是0,第2个索引值是1,以此类推。可以对字符串进行连接、截取、复制等操作。可以通过方括号“[]”截取字符串中的字符。例如,[0]表示截取字符串中的第1个字符,[-1]表示截取字符串中的倒数第1个字符。如果要截取字符串中的连续几个字符,则可以使用方括号加英文冒号。例如,[1:5]表示截取字符串中的第2~5个字符(索引值为1~4的字符),需要注意的是,不包括冒号右边索引位上的字符(索引值为5的字符)。示例代码如下:
输出结果如下:
注意:Python中的字符串不能改变,也就是说,字符串在被创建后,就不能再改变了。示例代码如下:
输出结果如下:
在这个例子中,首先将字符串“hello world”赋给变量str,然后通过索引str[0]修改字符串变量str中第1个字符的值,结果引起报错。这印证了字符串一旦创建,就不能被修改。
2.3.5 List(列表)
列表就像是备忘清单,每个编号都记录着一项清单详情,它是有序数据的集合,通过编号可以引用列表中的数据。列表也是策略开发中使用比较频繁的数据类型,商品期货API接口返回的大部分数据都是以列表形式呈现的。Python中的列表可以存储不同类型的元素,包括数字、字符串、列表、字典等。
列表使用方括号“[]”包含元素,相邻两个元素之间使用英文逗号“,”作为间隔符。和字符串类似,列表也可以通过索引获取其中的元素,并且使用索引截取列表中的一部分,列表在被截取后会返回一个新的列表,示例代码如下:
输出结果如下:
在列表中可以使用[头下标:尾下标]截取相应的元素,头下标和尾下标可以是正数,也可以是负数,如果头下标为空,则表示截取到头部;如果尾下标为空,则表示截取到尾部。和字符串不同的是,列表中的元素是可以改变的。可以对列表变量进行索引、切片、增加、删除、修改、查询等基本操作。示例代码如下:
输出结果如下:
Python中有很多用于对列表进行操作的函数。例如,使用len()函数可以获取列表中有多少个元素,使用append()函数可以在列表尾部增加一个元素,使用pop()函数可以删除列表中的一个元素,默认删除最后一个元素。示例代码如下:
输出结果如下:
在上述代码中,首先定义了一个列表变量,然后在列表变量尾部添加了一个元素,再使用Log()函数将修改后的列表变量打印出来,接着使用pop()函数删除了列表变量中的最后一个元素,最后再次使用Log()函数将列表变量打印出来。
2.3.6 Dictionary(字典)
字典定义了键和值之间一对一的映射关系,主要用于存储具有映射关系的数据,它是一个无序、可变、有索引的集合。字典中的数据会用花括号“{}”括起来,数据结构如下:
可以看到,字典中的元素是一个键名对应一个键值,如键名(keyName)"name"对应键值(keyValue)"TOM"。和列表类似,字典也可以嵌套。例如,在上述代码中,字典变量dict1中的键名"address"对应的键值就是一个字典。
输出结果如下:
注意:因为字典是通过键名访问键值的,所以字典中的键名必须是唯一的,并且键名的数据类型必须为不可变类型。可以使用内置的keys()函数输出所有键名,使用内置的values()函数输出所有键值,示例代码如下:
输出结果如下:
在上述代码中,首先定义了一个字典变量,然后使用Log()函数分别打印出该字典变量中的键名和键值(values)。需要注意的是,如果字典变量中的键值是一个子字典,那么该字典变量的values()函数会输出整个字典变量中的值(包括子字典)。
2.3.7 数据类型转换函数
Python提供了几种数据类型转换函数,用于将一种数据类型的数据转换为另一种数据类型的数据。例如,将浮点数转换为整数,将整数转换为字符串,等等。
● 将x转换为int类型:ret=int(x)。
● 将x转换为float类型:ret=float(x)。
● 将x转换为string类型:ret=str(x)。
Phthon中数据类型转换的示例代码如下:
输出结果如下:
在上述代码中,首先定义了一个浮点型变量,然后使用int()函数将该浮点型变量转换为整型变量,接着定义了一个字符串变量,再使用float()函数将该字符串变量转换为浮点型变量,最后使用str()函数将浮点型变量pi转换为字符串变量并打印其数据类型。