Python变量与标准数据类型详解
本文系统讲解Python中的变量机制及五大标准数据类型。详细阐述变量赋值规则、数字类型的四种分类及版本差异,深入解析字符串的索引与切片操作,对比列表与元组的可变性区别,并介绍字典的键值对存取方式及常用类型转换函数,帮助开发者掌握Python基础数据结构。
变量本质上是存储在计算机内存中的值。当程序创建变量时,系统会在内存中为其开辟一块特定的空间以存放数据。
解释器会根据变量所绑定的数据类型,自动分配相应大小的内存空间,并确定该内存中允许存储的数据格式。
因此,开发者可以指定不同的数据类型来创建变量,这些变量能够存储整数、浮点数或字符等多种类型的数据。
变量赋值机制
在Python语言中,进行变量赋值时无需显式声明数据类型,解释器会自动推断。
每个变量在内存中创建时,都包含标识符、名称以及具体的数据内容这三个关键信息。
变量在使用前必须经过赋值操作,只有完成赋值后,该变量才被视为在内存中真正创建。
等号(=)符号用于执行变量赋值操作。
等号(=)运算符的左侧必须是变量名,右侧则是存储在该变量中的具体值。示例如下:
#!/usr/bin/python # -*- coding: UTF-8 -*- counter = 100 # 赋值整型变量 miles = 1000.0 # 浮点型 name = "John" # 字符串 print counter print miles print name
在上述代码实例中,数值100、浮点数1000.0以及字符串"John"分别被赋值给变量counter、miles和name。
运行上述代码程序,控制台将输出以下结果:
100 1000.0 John
多变量赋值技巧
Python语法允许开发者同时为一个或多个变量进行赋值操作。例如:
a = b = c = 1
上述代码实例中,系统创建一个值为1的整型对象,并将变量a、b、c同时指向该相同的内存空间。
开发者也可以为多个不同的对象指定对应的变量。例如:
a, b, c = 1, 2, "john"
上述代码实例中,整型对象1和2分别被分配给变量a和b,而字符串对象"john"则被分配给变量c。
标准数据类型概览
在计算机内存中存储的数据可以呈现多种不同的类型。
例如,记录一个人的年龄可以使用数值类型存储,而记录名字则可以使用字符类型存储。
Python语言定义了一系列标准数据类型,用于存储各种不同性质的数据。
Python主要包含以下五个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
Python数字类型详解
数字数据类型主要用于存储数值信息。
数字属于不可变的数据类型,这意味着如果尝试修改数字数据,系统会分配一个新的对象来存储新值。
当开发者在代码中指定一个数值时,对应的Number对象就会被创建。示例如下:
var1 = 1 var2 = 10
开发者还可以使用del语句来删除对某些对象的引用,从而释放内存。
del语句的基本语法格式如下:
del var1[,var2[,var3[....,varN]]]]
通过del语句,开发者可以删除单个对象或多个对象的引用。具体示例如下:
del var
del var_a, var_b
Python语言支持四种不同的数字类型:
- int(有符号整型)
- long(长整型[也可以代表八进制和十六进制])
- float(浮点型)
- complex(复数)
数值类型实例展示
以下是一些常见的数值类型实例:
| int | long | float | complex |
|---|---|---|---|
| 10 | 51924361L | 0.0 | 3.14j |
| 100 | -0x19323L | 15.20 | 45.j |
| -786 | 0122L | -21.9 | 9.322e-36j |
| 080 | 0xDEFABCECBDAECBFBAEl | 32.3e+18 | .876j |
| -0490 | 535633629843L | -90. | -.6545+0J |
| -0x260 | -052318172735L | -32.54e100 | 3e+26J |
| 0x69 | -4721885298529L | 70.2E-12 | 4.53e-7j |
长整型也可以使用小写l,但是建议开发者使用大写L,以避免与数字1混淆。Python解释器使用大写L来显示长整型数值。
Python同样支持复数类型,复数由实数部分和虚数部分构成,可以使用a + bj的形式表示,或者使用complex(a,b)函数创建,其中复数的实部a和虚部b均为浮点型数据。
注意:long类型仅存在于Python2.X版本中。在2.2以后的版本中,当int类型数据发生溢出时会自动转为long类型。而在Python3.X版本中,long类型已被移除,统一使用int类型替代。
Python字符串操作
字符串(String)是由数字、字母、下划线等字符组成的一串字符序列。
在数学或编程表示中,字符串通常记为:
s="a1a2···an"(n>=0)
字符串是编程语言中表示文本数据的核心类型。
Python中的字符串列表支持两种取值顺序:
从左到右索引默认从0开始,最大范围是字符串长度减1。
从右到左索引默认从-1开始,最大范围是字符串的第一个字符。

若需从字符串中获取一段子字符串,可以使用[头下标:尾下标]语法进行截取。其中下标从0开始计算,可以是正数或负数,下标为空表示取到头或尾。
使用[头下标:尾下标]获取的子字符串包含头下标对应的字符,但不包含尾下标对应的字符。
例如:
>>> s = 'abcdef' >>> s[1:5] 'bcde'
当使用以冒号分隔的字符串切片时,Python会返回一个新的对象,结果包含了以这对偏移标识的连续内容,左侧起始位置包含该下标对应的字符。
上述结果包含了s[1]的值b,而截取的最大范围不包括尾下标,即不包含s[5]的值f。

加号(+)是字符串连接运算符,星号(*)是字符串重复操作符。具体实例如下:
#!/usr/bin/python # -*- coding: UTF-8 -*- str = 'Hello World!' print str # 输出完整字符串 print str[0] # 输出字符串中的第一个字符 print str[2:5] # 输出字符串中第三个至第五个之间的字符串 print str[2:] # 输出从第三个字符开始的字符串 print str * 2 # 输出字符串两次 print str + "TEST" # 输出连接的字符串
上述代码实例的输出结果如下:
Hello World! H llo llo World! Hello World!Hello World! Hello World!TEST
Python列表截取支持接收第三个参数,该参数用于指定截取的步长。以下实例在索引1到索引4的位置范围内,设置步长为2(即间隔一个位置)来截取字符串:

Python列表基础
List(列表)是Python中使用频率最高的数据类型之一。
列表能够完成大多数集合类数据结构的功能。它支持存储字符、数字、字符串,甚至可以包含其他列表(即嵌套列表)。
列表使用方括号[ ]进行标识,是Python中最通用的复合数据类型。
列表中值的切割同样可以使用变量[头下标:尾下标]语法,从而截取相应的列表子集。从左到右索引默认从0开始,从右到左索引默认从-1开始,下标为空表示取到头或尾。

加号+是列表连接运算符,星号*是列表重复操作符。具体实例如下:
#!/usr/bin/python # -*- coding: UTF-8 -*- list = [ 'runoob', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john'] print list # 输出完整列表 print list[0] # 输出列表的第一个元素 print list[1:3] # 输出第二个至第三个元素 print list[2:] # 输出从第三个开始至列表末尾的所有元素 print tinylist * 2 # 输出列表两次 print list + tinylist # 打印组合的列表
上述代码实例的输出结果如下:
['runoob', 786, 2.23, 'john', 70.2] runoob [786, 2.23] [2.23, 'john', 70.2] [123, 'john', 123, 'john'] ['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
Python元组详解
元组是另一种数据类型,其特性类似于List(列表)。
元组使用圆括号()进行标识,内部元素通过逗号隔开。与列表不同,元组一旦创建便不能二次赋值,因此相当于只读列表。
#!/usr/bin/python # -*- coding: UTF-8 -*- tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 ) tinytuple = (123, 'john') print tuple # 输出完整元组 print tuple[0] # 输出元组的第一个元素 print tuple[1:3] # 输出第二个至第三个的元素 print tuple[2:] # 输出从第三个开始至列表末尾的所有元素 print tinytuple * 2 # 输出元组两次 print tuple + tinytuple # 打印组合的元组
上述代码实例的输出结果如下:
('runoob', 786, 2.23, 'john', 70.2) runoob (786, 2.23) (2.23, 'john', 70.2) (123, 'john', 123, 'john') ('runoob', 786, 2.23, 'john', 70.2, 123, 'john')
以下代码尝试修改元组是无效的,因为元组不允许更新;而列表允许更新。示例如下:
#!/usr/bin/python # -*- coding: UTF-8 -*- tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 ) list = [ 'runoob', 786 , 2.23, 'john', 70.2 ] tuple[2] = 1000 # 元组中是非法应用 list[2] = 1000 # 列表中是合法应用
Python字典操作
字典(dictionary)是Python中除列表外最灵活的内置数据结构类型。列表是有序的对象集合,而字典是无序的对象集合。 两者的主要区别在于:字典中的元素是通过键(key)来存取的,而不是通过偏移量存取。
字典使用花括号"{ }"进行标识。字典由索引(key)和它对应的值(value)组成。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
上述代码的输出结果为:
This is one This is two {'dept': 'sales', 'code': 6734, 'name': 'john'} ['dept', 'code', 'name'] ['sales', 6734, 'john']
Python数据类型转换
有时,我们需要对数据内置的类型进行转换,只需将目标数据类型作为函数名调用即可实现。
以下是几个内置的函数,可以执行数据类型之间的转换。这些函数执行后会返回一个新的对象,表示转换后的值。
| 函数 | 描述 |
|---|---|
|
int(x [,base]) |
将x转换为一个整数 |
|
long(x [,base] ) |
将x转换为一个长整数 |
|
float(x) |
将x转换到一个浮点数 |
|
complex(real [,imag]) |
创建一个复数 |
|
str(x) |
将对象 x 转换为字符串 |
|
repr(x) |
将对象 x 转换为表达式字符串 |
|
eval(str) |
用来计算在字符串中的有效Python表达式,并返回一个对象 |
|
tuple(s) |
将序列 s 转换为一个元组 |
|
list(s) |
将序列 s 转换为一个列表 |
|
set(s) |
转换为可变集合 |
|
dict(d) |
创建一个字典。d 必须是一个序列 (key,value)元组。 |
|
frozenset(s) |
转换为不可变集合 |
|
chr(x) |
将一个整数转换为一个字符 |
|
unichr(x) |
将一个整数转换为Unicode字符 |
|
ord(x) |
将一个字符转换为它的整数值 |
|
hex(x) |
将一个整数转换为一个十六进制字符串 |
|
oct(x) |
将一个整数转换为一个八进制字符串 |
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













