02 Python基本数据类型:零基础全解析(从语法到代码)

Python基本数据类型是Python编程的入门必修课,也是写好所有代码的基础。刚接触Python的朋友,先把int、float、bool、str和None这5个核心类型学透,后续的变量、函数、循环才能顺理成章。这篇文章我会用最通俗的话讲清每个类型的用法、坑点和实战技巧,搭配可直接复制的代码,零基础也能轻松掌握。

Python基本数据类型总览分类

图1:Python基本数据类型总览分类示意图

一、Python基本数据类型总览

学Python先认数据类型,就像学数学先认数字一样。简单说,数据类型就是给数据分个类,不同类型的数能干的事不一样——比如数字能做加减乘除,文字能做拼接,逻辑值能做判断。

Python入门阶段不用记太多,核心就5种基础类型,覆盖90%的日常开发场景,先把这5个学扎实就够了:

  • 整数(int):没有小数的数字,比如年龄18、数量5、序号100,正负数和0都算
  • 浮点数(float):带小数的数字,比如身高178.5、价格29.99、圆周率3.14
  • 布尔类型(bool):只有两个值,True(真/是)和False(假/否),专门用来做判断
  • 字符串(str):所有文字、符号、数字组合的文本,比如”Python”、”123456″、”小白编程笔记”
  • 空值(NoneType):只有一个值None,就是“空的、没数据、还没赋值”的意思

教大家两个实用小技巧,快速判断数据类型:type() 直接看“是什么类型”,isinstance() 判断“是不是某个类型”,写代码调试时超好用。

# 新手必学:判断Python基本数据类型
age = 25
height = 175.5
is_student = True
username = "小白编程笔记"
temp_data = None

# 用type()看具体类型,直接复制运行就能看结果
print("age的类型:", type(age))        # 输出:<class 'int'>
print("height的类型:", type(height))  # 输出:<class 'float'>
print("username的类型:", type(username)) # 输出:<class 'str'>

# 用isinstance()判断,返回True/False,适合做条件判断
print("age是不是整数:", isinstance(age, int)) # 输出:True
print("username是不是字符串:", isinstance(username, str)) # 输出:True

二、数值类型:整数(int)+ 浮点数(float)

数值类型就是用来表示数字的,分整数和浮点数两种,也是大家最开始接触的类型。Python的数值运算很灵活,不用像C语言那样考虑“数据溢出”,多大的数字都能处理,新手直接用就行。

1. 整数(int):无小数的纯数字

整数的用法很简单,直接写数字就行,支持加减乘除、取余、平方等所有基本运算。另外Python还支持二进制、八进制、十六进制,做底层开发时会用到,新手先了解十进制就够了。

# 整数的定义和常用运算,直接复制运行
a = 15
b = 4

# 基础运算:加、减、乘、普通除法
print("加法:", a + b)    # 19
print("减法:", a - b)    # 11
print("乘法:", a * b)    # 60
print("普通除法:", a / b)# 3.75(注意:结果会变成浮点数)

# 新手必学:整除、取余、幂运算
print("整除(舍去小数):", a // b) # 3
print("取余(求余数):", a % b)   # 3
print("幂运算(平方/立方):", a ** 2) # 225(15的2次方)

# 超大整数也能直接算,Python不限制长度
big_num1 = 12345678901234567890
big_num2 = 98765432109876543210
print("超大整数相加:", big_num1 + big_num2) # 直接出结果,不报错

2. 浮点数(float):带小数的数字

浮点数就是带小数点的数字,日常用来表示身高、体重、价格这些需要精确到小数的场景,也支持科学计数法(比如1.8e3就是1800.0)。这里有个新手必踩的坑——浮点数运算有精度误差,比如0.1+0.2不等于0.3,而是0.30000000000000004,这不是代码错了,是计算机二进制存储的特性。

# 浮点数的定义和运算,注意精度误差
pi = 3.1415926
price = 29.99
sci_num = 1.8e3  # 科学计数法,等价于1800.0

print("科学计数法转换:", sci_num) # 输出:1800.0
print("0.1+0.2的结果:", 0.1 + 0.2) # 输出:0.30000000000000004(精度误差)

# 普通场景忽略误差即可,比如打印时保留2位小数
print("保留2位小数:", round(0.1 + 0.2, 2)) # 输出:0.3

3. 浮点数精度误差:精准解决方法

如果是做金融、电商结算这些对精度要求极高的场景,精度误差就不能忽略了。教大家用Python内置的decimal模块,彻底解决这个问题,原理就是用十进制存储数字,和我们日常计算的方式一致,结果100%精准。

# 高精度计算:用decimal模块解决浮点数误差
from decimal import Decimal

# 重点:参数要传字符串,不要直接传数字,避免提前出现误差
num1 = Decimal('0.1')
num2 = Decimal('0.2')
price = Decimal('99.99')
count = Decimal('3')

# 精准运算,结果和日常计算一致
print("0.1+0.2精准结果:", num1 + num2) # 输出:0.3
print("3件商品总价:", price * count)   # 输出:299.97

三、布尔类型(bool):专门做判断的类型

布尔类型是Python里最简单的类型,只有两个固定值:TrueFalse,**注意首字母必须大写**,小写的true/false会被当成普通变量,直接报错。

布尔值主要用来做条件判断(比如if语句、循环),核心记住一个规则:非0、非空、非None的内容,判断结果都是True;0、空字符串、None,判断结果都是False。另外布尔值本质是特殊的整数,True=1,False=0,能参与数值运算,但开发中不建议这么用,会让代码变难懂。

新手易错点

True/False首字母一定要大写!很多新手小写写成true/false,运行代码直接报“未定义变量”错误,踩过一次就记住了。

# 布尔类型的定义和常用操作
is_online = True
has_money = False

# 三大核心逻辑运算:与(and)、或(or)、非(not)
print("True and False:", True and False) # 与:两边都真才为真,输出False
print("True or False:", True or False)   # 或:有一个真就为真,输出True
print("not True:", not True)             # 非:取反,输出False

# 自动判断:哪些内容是True/False(新手重点记)
print("数字100:", bool(100))    # True(非0)
print("数字0:", bool(0))        # False(0)
print("非空字符串:", bool("Python")) # True(非空)
print("空字符串:", bool(""))    # False(空)
print("None:", bool(None))      # False(空值)

Python基本数据类型转换流程

图2:Python基本数据类型转换流程示意图

四、字符串类型(str):处理所有文本内容

字符串是Python里最常用的类型,没有之一,所有文字、符号、甚至数字组成的文本,都用字符串表示。字符串有个核心特性——不可变,意思是创建后不能直接修改里面的某个字符,比如想把”Python”改成”python”,不能直接改第一个字母,只能重新生成新的字符串。

定义字符串的关键规则:引号必须匹配,开头用单引号,结尾也得用单引号;支持单引号、双引号、三引号三种方式,新手根据场景选就行,不用死记。

1. 字符串的三种定义方式(各有妙用)

  • 单引号:适合短文本,比如 ‘Python’、’123’,简单直接
  • 双引号:适合包含单引号的文本,比如 “他说:’我在学Python'”,不用转义,更方便
  • 三引号:适合多行文本,比如大段注释、博客内容,保留原始换行,不用手动加\n
# 字符串三种定义方式,新手按需选择
# 1. 单引号:短文本
str1 = 'Python零基础入门'
# 2. 双引号:包含单引号的文本
str2 = "老师说:'学Python要多敲代码'"
# 3. 三引号:多行文本,保留换行
str3 = '''
这是小白编程笔记的Python教程
专注分享零基础能看懂的编程知识
从入门到实战,一步一步教
'''

# 直接打印,看多行效果
print(str2)
print(str3)

2. 字符串格式化:新手必学的实战技巧

写代码时经常需要把变量嵌入到字符串里,比如“姓名:小白,年龄:20”,这就是字符串格式化。Python有三种格式化方式,最推荐用f-string(Python3.6及以上支持),语法最简单、运行最快,新手直接学这个就够了,另外两种了解即可。

# 字符串格式化:重点学f-string,其他了解即可
name = "小白"
age = 20
score = 95.5

# 方式1:f-string(推荐)- 直接{}嵌入变量,还能做简单运算
print(f"姓名:{name},年龄:{age}")
print(f"明年年龄:{age + 1},成绩:{score}分")

# 方式2:format() - 兼容低版本Python,了解即可
print("姓名:{},年龄:{}".format(name, age))

# 方式3:%格式化 - 老式方法,现在基本不用了
print("姓名:%s,成绩:%f" % (name, score))

五、空值类型(NoneType):表示“空”的特殊类型

空值类型是Python里的特殊类型,只有一个固定值:None,**首字母必须大写**,意思是“没有数据、未赋值、空的”。很多新手会把None和0、空字符串””搞混,这里重点强调:None不是0,不是空字符串,也不是False,它是一个独立的类型,专门表示“空”,三者只是在布尔判断时都为False,本质完全不同。

None的核心用法:初始化变量(先占个位置,后续再赋值)、标记函数无返回值、作为判断条件,新手记住“判断None用is None,不用== None”,更精准、更符合Python规范。

# 空值None的使用方法和注意事项
# 1. 初始化变量:先赋值None,后续再修改
user_info = None
# 2. 函数无返回值时,默认返回None
def say_hello():
    print("你好,学Python的朋友!")
result = say_hello()
print("函数返回值:", result) # 输出:None

# 3. 判断变量是否为None(推荐用is None)
if user_info is None:
    print("变量还没赋值,值是None")
else:
    print("变量已赋值:", user_info)

# 重点:区分None、0、空字符串(本质不同)
print("None == 0?", None == 0)      # False
print("None == ''?", None == "")    # False
print("None == False?", None == False) # False

Python基本数据类型 可变vs不可变对比

图3:Python基本数据类型可变与不可变对比示意图

六、数据类型转换:新手必学的核心操作

写代码时经常需要转换数据类型,比如把输入的字符串”18″转成整数18做运算,把数字100转成字符串”100″做拼接,这就是类型转换。Python的类型转换很简单,用内置函数就行,分两种情况:隐式转换(Python自动转)显式转换(手动用函数转),新手重点学显式转换。

这里有个新手必踩的坑:字符串转数字时,字符串必须是纯数字,比如”123″能转成整数,”123a”就会报错,一定要注意格式。

类型转换核心规则(新手记死)

1. 纯数字字符串才能转数字,含字母/符号直接报错;2. 浮点数转整数直接舍去小数,不四舍五入(比如3.99转成3);3. 任何类型都能转字符串,无格式要求;4. 0/空/None转布尔值是False,其他都是True。

常用转换函数+实战代码

新手只需要记4个核心转换函数:int()(转整数)、float()(转浮点数)、str()(转字符串)、bool()(转布尔值),直接套用法就行,下面的代码可直接复制运行。

# 数据类型转换:新手必学4个核心函数
# 1. 字符串转数字(纯数字字符串才可以)
num_str = "188.88"
float_num = float(num_str)  # 转浮点数
int_num = int(float_num)    # 浮点数转整数(舍去小数)
print("转浮点数:", float_num) # 188.88
print("转整数:", int_num)     # 188

# 2. 数字转字符串(任意数字都可以)
age = 20
age_str = str(age)
print("数字转字符串拼接:", "我的年龄是" + age_str + "岁")

# 3. 任意类型转布尔值(按核心规则来)
print("0转布尔:", bool(0))      # False
print("100转布尔:", bool(100))  # True
print("None转布尔:", bool(None))# False
print("非空字符串转布尔:", bool("Python")) # True

# 4. 隐式转换:Python自动转(不用手动管)
a = 10(整数)
b = 3.5(浮点数)
print("整数+浮点数:", a + b) # 13.5,整数自动转浮点数

七、可变与不可变类型:理解Python的底层逻辑

这部分是新手理解Python的关键,也是区分“新手”和“入门”的分水岭。简单说,不可变类型就是创建后不能直接修改,修改会生成新的对象;可变类型就是创建后能直接修改,修改后还是原来的对象

教大家一个直观的方法:用id()函数看**内存地址**,如果修改后地址变了,就是不可变类型;地址不变,就是可变类型。本文讲的5种基础类型,全都是不可变类型,后续学的列表、字典是可变类型,先记死这个结论。

# 用id()函数看内存地址,理解可变/不可变
# 1. 不可变类型:整数(修改后地址变)
a = 10
print("a=10的地址:", id(a)) # 一个唯一数字
a = 20
print("a=20的地址:", id(a)) # 地址变了,生成新对象

# 2. 不可变类型:字符串(修改后地址变)
s = "Python"
print("s='Python'的地址:", id(s))
s = s + "3.10"
print("s='Python3.10'的地址:", id(s)) # 地址变了,生成新对象

# 3. 可变类型:列表(后续学,修改后地址不变)
lst = [1,2,3]
print("lst=[1,2,3]的地址:", id(lst))
lst.append(4)
print("lst=[1,2,3,4]的地址:", id(lst)) # 地址不变,修改原对象

不可变类型(基础类型全是)

  • int(整数)、float(浮点数)
  • bool(布尔)、str(字符串)
  • NoneType(空值)
  • 核心特点:修改后生成新对象,内存地址改变

可变类型(后续学习)

  • list(列表)、dict(字典)
  • set(集合)
  • 核心特点:修改后原对象改变,内存地址不变

八、新手常见问题FAQ(解决90%的疑问)

Q1:为什么0.1+0.2不等于0.3?

不是代码错了,是计算机用二进制存储浮点数的特性导致的精度误差。普通场景用round()保留小数即可,金融等高精度场景用decimal模块,能彻底解决这个问题。

Q2:字符串是不可变的,怎么修改内容?

不能直接修改原字符串,只能通过“重新赋值”生成新字符串,比如用replace()替换字符、用+拼接内容,看似是“修改”,实际是创建了新的字符串对象,原字符串没变。

Q3:判断None为什么用is None,不用== None?

is用来判断“两个对象是不是同一个”(内存地址是否相同),==用来判断“两个对象的值是否相等”。None在Python中是唯一的,只有一个内存地址,用is None判断更精准、更符合Python规范,也能避免一些特殊情况的坑。

Q4:f-string、format()、%格式化,选哪个?

优先选f-string(Python3.6+),语法最简单、运行速度最快,{}里还能直接做运算、调用函数;如果需要兼容Python2.x,用format();%格式化是老式方法,现在基本不用了,代码可读性差。

Q5:布尔值为什么能和数字做运算?

因为Python的底层设计中,bool类型是int类型的子类,True继承自1,False继承自0,所以能直接参与数值运算。但实际开发中不建议这么用,会让代码的可读性变差,逻辑判断就用纯布尔值,不要和数字混用。

九、实战练习(必做!敲代码才是硬道理)

学Python不敲代码等于白学,下面6个练习覆盖本文所有核心知识点,建议新手独立完成,不会的再回头看文章,重点理解代码的执行逻辑,而不是死记硬背。

  1. 定义5个变量,分别是int、float、bool、str、None类型,用type()查看类型,用isinstance()判断类型;
  2. 用f-string格式化字符串,输出自己的信息(姓名、年龄、身高、爱好),其中身高为浮点数;
  3. 测试0.1+0.2的精度误差,用round()保留2位小数,再用decimal模块实现精准计算;
  4. 用id()函数演示字符串的不可变特性,修改字符串后查看内存地址变化;
  5. 将字符串”199.99″转成浮点数,再转成整数,观察结果;将整数200转成字符串,与”元”拼接;
  6. 定义一个布尔变量,分别与整数1和0做加法运算,观察结果,并解释底层原因。

十、核心知识点总结(新手快速复习)

  • Python基本数据类型核心5种:int(整数)、float(浮点数)、bool(布尔)、str(字符串)、NoneType(空值);
  • type()查看具体类型,isinstance()判断类型,id()查看内存地址,新手必学三个函数;
  • 布尔值只有True/False(首字母大写),非0/非空/非None为True,0/空/None为False;
  • 字符串不可变,支持单/双/三引号定义,f-string是最推荐的格式化方式;
  • None是独立空值类型,判断用is None,不要和0、空字符串混淆;
  • 浮点数有精度误差,高精度场景用decimal模块,普通场景用round()保留小数;
  • 类型转换:纯数字字符串可转数字,浮点数转整数舍去小数,任何类型都能转字符串;
  • 所有基础类型都是不可变类型,修改后生成新对象,内存地址改变;
  • 不可变类型看内存地址用id(),地址变了就是生成了新对象。

本文是Python零基础入门系列的第二篇核心内容,也是Python编程的基础中的基础。更多新手能看懂的Python教程,可查看往期文章:Python变量与变量名全解析Python简易计算器实战。想深入了解Python官方语法,可参考Python官方标准数据类型文档

本文为「小白编程笔记」原创内容 · Python零基础入门系列
版权声明:本文所有内容(含代码、图片、文字)均为原创,未经授权禁止任何形式的转载、抄袭、洗稿
如需转载,请联系作者获得授权,并在正文开头显著位置标注原文链接和作者信息!

文章标签:
Python基本数据类型
Python零基础
Python入门
Python数据类型转换
Python语法

1人评论了“02 Python基本数据类型:零基础全解析(从语法到代码)”

  1. Pingback: Python零基础入门系列专栏:10+篇干货从环境搭建到语法实战,小白一站式学Python - 小白 编程 笔记

发表评论

滚动至顶部
渝公网安备50022402001073号  |  渝ICP备2026004448号   © 2026 小白编程笔记