Python 中的数据类型

本篇博客介绍下 Python 语言中的数据类型。

Python变量类型

变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。

基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。

因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

变量赋值

Python 中的变量赋值不需要类型声明。

每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

等号(=)用来给变量赋值。

等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/usr/bin/env
# -*- coding: UTF-8 -*-
 
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
 
print counter
print miles
print name

多个变量赋值

Python 允许你同时为多个变量赋值。

1
a = b = c = 1 # 创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。

可以为多个对象指定多个变量。

1
a, b, c = 1, 2, "john" # 两个整型对象1和2分别分配给变量 a 和 b,字符串对象 "john" 分配给变量 c。

标准数据类型

在内存中存储的数据可以有多种类型。Python定义了一些标准类型,用于存储各种类型的数据。

Python有五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

python 的所有数据类型都是类,可以通过 type() 查看该变量的数据类型。

数字

数字数据类型用于存储数值,不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

当你指定一个值时,Number对象就会被创建,如下所示:

1
2
var_a = 1
var_b = 12

可以通过使用del语句删除单个或多个对象的引用,如下所示:

1
2
del var
del var_a, var_b

Python支持四种不同的数字类型:

  • int(有符号整型),通常被称为是整型或整数,是正或负整数,不带小数点。
  • long(长整型[也可以代表八进制和十六进制]),无限大小的整数,整数最后是一个大写或小写的L。
  • float(浮点型),浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示。
  • complex(复数),复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

注意:

1、长整型也可以使用小写"l",建议使用大写"L",避免与数字"1"混淆。Python使用"L"来显示长整型。

2、Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型

字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符。

一般记为:

1
s="a1a2···an"(n>=0) 是编程语言中表示文本的数据类型。

python的字串列表有2种取值顺序:

  • 从左到右索引,默认从0开始,最大范围是字符串长度-1;
  • 从右到左索引,默认从-1开始,最大范围是字符串开头;

Python不支持单字符类型,单字符也在Python也是作为一个字符串使用。

如果要实现从字符串中获取一段子字符串的话,可以使用变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾。 例如:

1
s = 'ilovepython',则s[1:5]的结果为:love,取到的最大范围包括下边界、不包括上边界。

当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。

加号(+)是字符串连接运算符,星号(*)是重复操作。

字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。 如下示例:

1
2
3
#!/usr/bin/python

print "My name is %s and weight is %d kg!" % ('Zara', 21) 

输出结果为:

1
My name is Zara and weight is 21 kg!

Python字符串格式化符号

符号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%p 用十六进制数格式化变量的地址
%G %f 和 %E 的简写

Python三引号

python中三引号可以将复杂的字符串进行复制:

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

三引号的语法是一对连续的单引号或者双引号(通常都是成对的用)。

1
2
3
4
5
6
7
>>> hi = '''hi 
there'''
>>> hi   # repr()
'hi\nthere'
>>> print hi  # str()
hi 
there  

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

一个典型的用例是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符串转义将会非常的繁琐。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')

Unicode字符串

Python 中定义一个 Unicode 字符串和定义一个普通字符串一样简单:

1
2
>>> u'Hello World !'
u'Hello World !'

引号前小写的"u"表示这里创建的是一个 Unicode 字符串。如果你想加入一个特殊字符,可以使用 Python 的 Unicode-Escape 编码。如下例所示:

1
2
>>> u'Hello\u0020World !'
u'Hello World !'

被替换的 \u0020 标识表示在给定位置插入编码值为 0x0020 的 Unicode 字符(空格符)。

列表

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

列表用 [ ] 标识,是 python 最通用的复合数据类型,列表是允许更新的。 一个列表如下所示: list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]

列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

加号 + 是列表连接运算符,星号 * 是重复操作。

Python已经内置确定序列的长度以及确定最大和最小的元素的方法,列表的数据项不需要具有相同的类型。

元组

元组(tuple)是另一个数据类型,类似于List(列表)。

元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表,元组是不允许更新的。

一个元组如下所示: tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )

无关闭分隔符

任意无符号的对象,以逗号隔开,默认为元组,如下示例:

1
2
3
4
5
#!/usr/bin/python

print 'abc', -4.24e93, 18+6.6j, 'xyz';
x, y = 1, 2;
print "Value of x , y : ", x,y;

运行的结果为:

1
2
abc -4.24e+93 (18+6.6j) xyz
Value of x , y : 1 2

字典

字典(dictionary)是除列表(List)以外python之中最灵活的内置数据结构类型,是无序的对象集合。

字典(directory)与列表(list)之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是另一种可变容器模型,且可存储任意类型对象。

字典用 { } 标识,字典由索引(key)和它对应的值value组成,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如下所示:

1
d = {key1:value1, key2:value2, key3:value3}

键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

一个字典如下所示:

1
2
3
4
5
dict = {'name':'john', 'code':6734, 'dept':'sales'}
或
dict = {'abc':456}
或
dict = {'abc':123, 98.6:23}

字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

1、不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。

2、由于键必须不可变,所以可以用数字、字符串或元组充当,用列表就不行,

updatedupdated2017-09-182017-09-18
加载评论