Z
ZHANK
编程在线教程Python 教程变量与数据类型
基础入门

变量与数据类型

学习变量声明、数字、字符串、布尔等基础数据类型

变量与数据类型

变量是编程中最基础的概念——它就像一个带标签的盒子,用来存储数据。Python 不需要提前声明变量类型,直接赋值即可。

学完本章你将掌握: 变量命名规则、6 种核心数据类型、类型检查和转换。


一、变量是什么

python
name = "小明"      # 把"小明"放进叫 name 的盒子里
age = 20           # 把 20 放进叫 age 的盒子里
score = 95.5       # 小数也可以
is_student = True  # 真假值

print(f"姓名: {name}, 年龄: {age}, 分数: {score}")

💡 你知道吗:Python 的变量名只是一个"标签",指向内存中的实际数据。同一个值可以被多个变量名引用,修改一个不会影响另一个(对于不可变类型)。


二、变量命名规则

python
# ✅ 合法命名
user_name = "小明"      # 字母 + 下划线(推荐)
_score = 100           # 下划线开头
score2 = 95            # 字母 + 数字
MAX_VALUE = 1000       # 全大写表示常量(约定)
_ = "临时变量"          # 单下划线

# ❌ 非法命名
# 2name = "错误"       # 不能数字开头
# my-name = "错误"     # 不能用连字符
# class = "错误"       # 不能使用关键字
# my name = "错误"     # 不能有空格

Python 关键字(不能用作变量名)

这些词被 Python 保留,不能作为变量名:

python
# 查看所有关键字
import keyword
print(keyword.kwlist)
# ['False', 'None', 'True', 'and', 'as', 'assert', 'async',
#  'await', 'break', 'class', 'continue', 'def', 'del', 'elif',
#  'else', 'except', 'finally', 'for', 'from', 'global', 'if',
#  'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or',
#  'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

💡 命名建议:变量名要见名知意a = 18 远不如 age = 18 清晰。好的命名让代码像文章一样易读。


三、数字类型

Python 有三种数字类型:

python
age = 25              # int(整数)—— 没有小数点
pi = 3.14159          # float(浮点数)—— 有小数点
big = 1_000_000       # 可以用下划线分隔,更易读
sci = 1.5e3           # 科学计数法 = 1500.0

# 类型检查
print(type(age))      # <class 'int'>
print(type(pi))       # <class 'float'>
print(isinstance(age, int))  # True

整数 vs 浮点数的精度问题:

python
# 整数运算精确
print(10 / 3)   # 3.3333333333333335

# 浮点数有精度限制(所有语言都这样)
print(0.1 + 0.2)        # 0.30000000000000004 (不是 0.3!)
print(0.1 + 0.2 == 0.3) # False!

# 解决办法:用 round()
print(round(0.1 + 0.2, 2))  # 0.3

⚠️ 常见陷阱:不要直接用 == 比较浮点数!用 round() 或检查差值是否非常小。


四、字符串类型

字符串是文本数据,用引号包裹:

python
s1 = 'hello'                 # 单引号
s2 = "world"                 # 双引号(没区别)
s3 = '''多行
字符串'''                    # 三引号可跨行
s4 = "他说:\"你好\""        # 引号内嵌套引号要转义

# 字符串长度
print(len(s1))              # 5
print(len("你好"))           # 2

# 字符串拼接
print("Hello " + "World")   # Hello World
print("A" * 5)              # AAAAA(重复)

五、布尔类型

只有两个值:TrueFalse(首字母大写):

python
is_adult = True
is_student = False

# 比较运算产生布尔值
print(10 > 5)        # True
print(10 == 5)       # False
print("a" == "a")    # True

# 布尔值可以参与数学运算
print(True + True)   # 2(True = 1)
print(False + 1)     # 1(False = 0)

# bool() 判断
print(bool(0))       # False
print(bool(42))      # True
print(bool(""))      # False(空字符串)
print(bool("hello")) # True(非空字符串)
print(bool([]))      # False(空列表)
print(bool([1,2]))   # True(非空列表)

💡 你知道吗:Python 中,以下值被视为 False00.0""(空字符串)、[](空列表)、{}(空字典)、None。其他都是 True。这叫真值测试


六、None 类型

None 表示"什么都没有"、"空"、"不存在":

python
result = None
print(result)        # None
print(type(None))    # <class 'NoneType'>

# 常用场景:函数没有 return 时返回 None
def do_something():
    pass
print(do_something())  # None

# 检查是否为 None(用 is,不要用 ==)
if result is None:
    print("没有结果")

七、类型检查与转换

python
# type() 查看类型
x = 42
print(type(x))       # <class 'int'>
x = "hello"
print(type(x))       # <class 'str'>

# 类型转换
print(int("42"))     # 42(字符串转整数)
print(float("3.14")) # 3.14(字符串转浮点)
print(str(100))      # "100"(数字转字符串)
print(bool(1))       # True(数字转布尔)

# 转换失败的例子
# print(int("abc"))  # ❌ ValueError: 无法转换
# print(int("3.14")) # ❌ 不能直接把小数格式的字符串转 int
print(int(float("3.14")))  # ✅ 先转 float,再转 int = 3

八、动态类型

Python 变量可以随时改变类型(动态类型语言):

python
x = 10           # x 是整数
print(type(x))   # <class 'int'>

x = "hello"      # 现在 x 是字符串
print(type(x))   # <class 'str'>

x = [1, 2, 3]    # 现在 x 是列表
print(type(x))   # <class 'list'>

💡 灵活但要小心:动态类型让代码简洁,但也容易写出 bug。一个好的习惯是:一个变量只用来存一种类型的数据


小结

  1. 变量 = 数据的标签,name = "小明" 即可创建
  2. 基本类型:int(整数)、float(浮点)、str(字符串)、bool(布尔)、None
  3. type() 查类型,int() str() 做转换
  4. 浮点数有精度问题,不要直接用 == 比较
  5. 变量命名用 snake_case,见名知意

小练习

  1. 创建变量存储你的姓名、年龄和城市,然后打印出来
  2. 验证 0.1 + 0.2 == 0.3 是 True 还是 False?
  3. bool("")bool([]) 分别返回什么?运行验证

💬 下一章预告:学完变量,下一章学习运算符——有了数据,我们需要对它进行计算和判断。