Python变量与标准数据类型详解

咖啡半糖
咖啡半糖
发布时间:2026-10-13 | 5人浏览过
原创

本文系统讲解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主要包含以下五个标准的数据类型:

  1. Numbers(数字)
  2. String(字符串)
  3. List(列表)
  4. Tuple(元组)
  5. 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)

将一个整数转换为一个八进制字符串

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表