Python 基础入门:变量概念与数据类型详解
1. 什么是变量
在 Python 中,变量可以被视为一个容器,专门用于存储程序运行时的数据。每个变量都有一个唯一的标识符(名称),通过该名称即可访问其中存储的值。从内存管理的角度来看,变量名实际上指向了内存中的一个地址,类似于现实生活中的门牌号。
本文深入讲解了 Python 编程语言中的变量概念与核心数据类型。内容涵盖变量作为内存地址容器的本质、弱类型语言的特性、数值类型(整数、浮点数、复数)及其精度问题的解决方案、字符串与字节串的处理及编码转换、布尔值的逻辑判断以及变量命名的最佳实践。通过代码示例与原理分析,帮助初学者建立扎实的 Python 基础,规避常见陷阱。

在 Python 中,变量可以被视为一个容器,专门用于存储程序运行时的数据。每个变量都有一个唯一的标识符(名称),通过该名称即可访问其中存储的值。从内存管理的角度来看,变量名实际上指向了内存中的一个地址,类似于现实生活中的门牌号。
将数据赋值给变量的过程称为'赋值'。在 Python 语法中,使用等号 = 来实现赋值操作。例如:
s = 5
p = 'abc'
m = 3.14159
t = '中国人'
姓名 = '张三' # 虽然支持中文变量名,但为了兼容性和可读性,通常不推荐使用
变量具有动态特性,只能容纳一个值。当对同一变量进行新的赋值时,旧的值会被覆盖并释放(在引用计数机制下)。Python 的赋值方式非常灵活,支持表达式直接赋值:
m = 3.14159
s = m + 1 # 结果为 4.14159
q = 3 + 2 - 1 * 9 # 结果为 -4
o = s + (5 * 2) # 结果为 14.14159
与其他强类型语言(如 C++、Java)不同,Python 不需要在赋值前显式声明变量类型。这种特性使得 Python 属于弱类型(动态类型)语言。
x 可以先赋值为整数,后赋值为字符串。尽管变量没有固定的静态类型,但它始终拥有具体的运行时类型。可以使用内置函数 type() 来查看变量的具体类型:
x = 10
print(type(x)) # 输出:<class 'int'>
结果显示 <class 'int'>,表明这是一个整数类型的变量。这也印证了 Python 中'万物皆对象'的设计理念,即所有数据都是类的实例。
Python 主要支持三种数值类型:整数(int)、浮点数(float)和复数(complex)。
整数包括正整数、零和负整数。对于较长的数字,Python 允许使用下划线 _ 作为分隔符以提高可读性,这不会影响数值本身:
large_number = 1_000_000_000
print(large_number) # 输出:1000000000
浮点数用于表示小数。根据小数点在存储过程中是否移动,可分为浮点数和定点数。Python 默认使用浮点数。
浮点数有两种书写形式:
32.658, 78.125。aen 或 aEn,表示 $a \times 10^n$。f = 5e5
print(f) # 输出:500000.0
print(type(f)) # 输出:<class 'float'>
p = 5E5
print(p) # 输出:500000.0
print(type(p)) # 输出:<class 'float'>
复数的表达方式为 a+bj,其中 j 代表虚部单位。
c1 = 9 + 0.5j
print("c1:", c1)
print("数据类型:", type(c1))
c2 = 8 - 1.5j
print("c2:", c2)
# 复数运算
print("c1+c2:", c1 + c2)
print("c1*c2:", c1 * c2)
在 Python 中执行 0.1 + 0.2 时,结果往往不是精确的 0.3,而是 0.30000000000000004。这是因为计算机底层使用二进制存储十进制小数,而某些十进制小数无法用有限位的二进制精确表示(类似无限循环小数)。
为解决此问题,可以使用 decimal 模块或 fractions 模块进行高精度计算:
import decimal
from fractions import Fraction
# 使用 Decimal 模块
a = decimal.Decimal("20.0")
b = decimal.Decimal("3")
print(20.0 / 3) # 浮点除法,有精度误差
print(a / b) # Decimal 除法,精度高
# 使用 Fraction 模块
print(Fraction(20, 3)) # 输出分数形式
字符串是由字符组成的序列,在 Python 中使用单引号 ' ' 或双引号 " " 包裹。注意必须使用英文输入法下的符号。
如果字符串内部包含引号,需要进行转义处理。例如,字符串中包含单引号时,外层可用双引号,或者使用反斜杠 \ 转义:
s1 = 'he\'s pen'
s2 = "he's pen"
长字符串可以通过反斜杠 \ 续行,或使用三引号 ''' 或 """ 实现多行字符串:
s = '''这是一个案例
转行输出
被隔开了'''
print(s)
在处理文件路径时,反斜杠 \ 是转义字符,可能导致错误。建议使用原始字符串(前缀 r)或正斜杠 /:
path = r"F:\Program Files\Python\python.exe"
# 或者
path = "F:/Program Files/Python/python.exe"
Python 3 默认采用 Unicode 字符集,支持全球多种语言的字符。
bytes 类型非常适合网络传输或存储二进制文件(如图片、音频)。它由若干字节组成,以字节为单位进行操作。
# 创建 bytes 对象
s1 = bytes()
s2 = b''
by_s = b'http://www.baidu.com/python/'
print(by_s)
print(by_s[3]) # 访问单个字节
print(by_s[7:22]) # 切片
# 编码与解码
str1 = by_s.decode('UTF-8')
print(str1)
# 字符串转 bytes
s4 = bytes('这是一段文字', encoding='UTF-8')
s5 = "这是一段文字".encode('UTF-8')
print(s4)
print(s5)
# bytes 转字符串
q1 = s4.decode('UTF-8')
print(q1)
Python 提供 bool 类型表示真(True)或假(False)。除了字面量 True 和 False,几乎所有对象都可以进行真假值测试。空字符串、空列表、0 等通常被视为 False,非空对象或非零数值视为 True。
print(bool("")) # False
print(bool("Hello")) # True
print(bool(0)) # False
print(bool(1)) # True
为了保证代码的可读性和可维护性,建议遵循以下命名规范:
if, for, class 等)。myVar 和 myvar 是不同的变量。良好的编程习惯有助于减少 Bug 并提升团队协作效率。
本文详细介绍了 Python 中的变量概念及核心数据类型。理解变量背后的内存模型、掌握不同数据类型的特性及转换方法,是编写高效 Python 程序的基础。在实际开发中,应根据具体场景选择合适的类型,并注意处理浮点精度和编码问题。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online