Python 变量详解:定义、类型与作用域(从入门到实战)

Released: 2025年12月26日
📅 最后更新:2025年12月26日

什么是 Python 变量?先别急着背概念

在 Python 中,变量并不是一个“盒子”,而是一个“标签”。
它指向内存中的某个对象,这个设计非常 Pythonic,也直接影响了后面你对类型和作用域的理解。

x = 10

这行代码的真实含义是:
? 名字 x 指向了一个值为 10 的对象。

如果你是完全零基础,建议先系统过一遍 Python 的基础语法,可以参考这篇非常适合新手的文章:
? Python 基础语法详解(附示例):零基础也能看懂

一句大实话:
变量不难,难的是你以为它很简单。

Python 变量详解

Python 变量的定义规则(别让低级错误拖后腿)

1. 变量命名规范(这是职业素养)

Python 对变量名的规则并不复杂,但非常讲究“约定俗成”:

  • 只能包含:字母、数字、下划线
  • 不能以数字开头
  • 区分大小写
  • 不能使用关键字(如 if、for、class)

推荐风格(PEP 8):

user_name = "Alice"
total_price = 99.9

别小看命名,企业级代码里,命名质量≈维护成本。
写给未来的你,也是写给同事。

2. 变量赋值的几种常见方式

单变量赋值

age = 18

多变量同时赋值(高效又优雅)

a, b, c = 1, 2, 3

链式赋值(慎用)

x = y = z = 0

在复杂项目中,链式赋值容易降低可读性,稳一点总没错。

Python 变量的类型:动态但不随便

Python 是动态类型语言,变量本身没有类型,对象才有类型。

1. 使用 type() 查看变量类型

x = 10
print(type(x)) # <class 'int'>

这不是炫技,而是调试时的“救命技能”。

2. 常见 Python 数据类型一览

(1)数值类型

  • int:整数
  • float:浮点数
  • complex:复数(用得不多,但很 Python)
price = 9.99
count = 3

(2)字符串(str)

name = "Python"

字符串是不可变类型,这一点会直接影响变量的行为。

(3)布尔类型(bool)

is_active = True

在条件判断中,它就是你的“业务开关”。

(4)列表(list)

numbers = [1, 2, 3]

可变类型,灵活但要小心副作用。

(5)元组(tuple)

point = (10, 20)

不可变,安全感拉满。

(6)字典(dict)

user = {"name": "Tom", "age": 18}

真实项目里,字典几乎无处不在。
Python 变量详解

变量与可变 / 不可变对象:这是分水岭

这一部分,很多初学者会“似懂非懂”,但你一旦理解,就能少掉 80% 的坑。

1. 不可变对象(immutable)

  • int
  • float
  • str
  • tuple
a = 10
b = a
a = 20

此时 b 仍然是 10,因为 a 指向了新对象。

2. 可变对象(mutable)

  • list
  • dict
  • set
list1 = [1, 2]
list2 = list1
list1.append(3)

此时 list2 也会变。
这不是“坑”,是设计,只是你要知道。

Python 变量作用域:LEGB 规则一锤定音

说到 Python 变量作用域,只记住四个字母就够了:
LEGB

  • L:Local(局部)
  • E:Enclosing(嵌套)
  • G:Global(全局)
  • B:Built-in(内置)

Python 查找变量时,按这个顺序一路找下去。

1. 局部变量(Local)

def func():
 x = 10
 print(x)

只在函数内部有效,出了门就不认你。

2. 全局变量(Global)

x = 5

def func():
 print(x)

能用,但不建议滥用。
在企业级项目里,全局变量是“风险资产”。

3. global 关键字(慎重使用)

x = 10

def func():
 global x
 x = 20

这相当于“直接改公司制度”,能不用就不用。

4. 嵌套作用域(Enclosing)

def outer():
 x = 10
 def inner():
 print(x)
 inner()

闭包的基础,后面学装饰器一定会遇到。

5. 内置作用域(Built-in)

print(len("Python"))

len 就来自 Built-in。

变量使用中的常见坑(真踩过,不忽悠)

  • 在函数里误修改全局变量
  • 可变对象作为默认参数
  • 命名覆盖内置函数(如 list = [])

如果你已经开始系统学习 Python,建议结合完整路线来规划,而不是东一榔头西一棒子:
? Python 学习路线:从入门到就业完整指南

结合官方与实战:变量不是背出来的

如果你想进一步验证或深入理解,下面两个资源非常值得收藏:

它们对 Python 变量作用域 的解释非常严谨,也符合实际开发场景。

写在最后:基础不花哨,但决定上限

Python 变量,看似简单,实则是所有高级特性的地基。
写代码就像做生意,底层逻辑稳了,上层才跑得快。

如果你希望持续夯实 Python 基础、查资料不迷路,可以把这个站点作为入口:? Python下载

一句掏心窝子的建议:
别急着学框架,先把变量、类型、作用域吃透。
慢,就是快。

Related Resources