1. 什么是 Python 变量
在正式学习变量之前,先来了解 Python 中的注释。注释是代码中用于解释说明的文字,以#开头,Python 解释器会完全忽略注释内容,不会执行它们。注释的主要作用是提高代码的可读性,方便自己和他人理解代码的意图。
单行注释
单行注释以#开头,可以独占一行,也可以放在代码行末尾。独占一行的注释通常用于说明下面代码的作用;行尾注释则用于解释当前这一行代码的含义。
# 这是独占一行的注释,说明下面代码的作用 age = 25 # 这是行尾注释,解释这一行代码的含义 print(age) # 输出: 25多行注释
Python 没有专门的多行注释语法。当需要写多行注释时,可以连续使用多个#,也可以使用三引号('''或""")包裹一段文字。三引号本质上是字符串,但如果不赋值给任何变量,就会被解释器忽略,起到注释的效果。
# 方式一:连续使用多个 # 号 # 这是第一行注释 # 这是第二行注释 # 这是第三行注释 """ 方式二:使用三引号 这是第一行注释 这是第二行注释 这是第三行注释 """ print("Hello")注释的作用
- 解释代码意图:说明这段代码"为什么这样写",而不只是"写了什么"。
- 临时屏蔽代码:调试时可以在某行代码前加
#,让这行代码暂时不执行。 - 标注输出结果:在
print语句后标注预期输出,方便阅读时对照。 - 分组与导航:用注释把代码分成不同功能块,便于快速定位。
# 调试时临时屏蔽某行代码 # print("这行不会执行") print("这行会执行")注释的最佳实践
- 注释要简洁明了,说明"为什么",而不是重复代码本身。
- 行尾注释与代码之间建议留两个空格,保持整洁。
- 代码更新后,同步更新注释,避免注释与代码不一致。
- 不要过度注释,清晰的代码本身也是一种"注释"。
动态类型与静态类型是编程语言中两种不同的类型检查机制,理解它们的区别有助于更好地掌握 Python 变量的特性。
- 动态类型语言:变量在运行时才确定类型,同一个变量名可以在不同时刻指向不同类型的对象。Python、JavaScript、Ruby 都属于动态类型语言。
- 静态类型语言:变量在编译阶段就必须明确类型,且类型在生命周期内不可改变。Java、C、C++ 都属于静态类型语言。
下面通过一个对比示例来说明两者的差异:
# Python(动态类型):变量可以随时改变类型 value = 10 # 此时 value 是整数 value = "hello" # 此时 value 变成字符串,无需额外声明 print(value) # 输出: hello上面的示例中,#后面的文字是注释。注释以#开头,用于解释代码的作用,Python 解释器会完全忽略注释内容,不会执行它们。第一行注释说明了这段代码演示的是动态类型;第二行注释解释了value = 10时变量是整数;第三行注释说明变量被重新赋值为字符串;第四行注释标注了输出结果。
// Java(静态类型):变量类型在声明时固定 int value = 10; // 声明为 int 类型 // value = "hello"; // 编译报错:不能把字符串赋给 int 类型变量Java 使用//表示单行注释。第一行注释说明 Java 是静态类型语言;第二行注释解释了value被声明为int类型;第三行注释指出,如果尝试把字符串赋给int类型变量,会在编译阶段报错。与 Python 不同,Java 的注释符号是//,而 Python 使用#。
动态类型让 Python 代码更简洁灵活,但也在一定程度上牺牲了编译期的类型检查能力;静态类型则能在编译阶段发现更多类型错误,但代码相对繁琐。两者各有优劣,选择哪种风格取决于具体项目的需求和团队偏好。
在 Python 中,变量是用于存储数据的命名容器。与许多其他编程语言不同,Python 是动态类型语言,这意味着你不需要在声明变量时指定其类型,解释器会根据赋值自动推断类型。
变量本质上是对内存中某个对象的引用。当你执行a = 10时,Python 会在内存中创建一个整数对象10,然后让变量名a指向这个对象。
2. 变量的命名规则
Python 变量的命名需要遵循以下规则:
- 变量名只能包含字母、数字和下划线,且不能以数字开头。
- 变量名区分大小写,
name和Name是两个不同的变量。 - 不能使用 Python 关键字作为变量名,如
if、for、while、class等。 - 推荐使用小写字母和下划线组合的命名风格(snake_case),如
user_name、total_count。
下面是一个简单的命名示例:
# 合法命名 user_name = "Alice" total_count = 100 _private_var = 3.14 非法命名(会报错) 1st_name = "Bob" # 不能以数字开头 class = "test" # class 是关键字这段代码中的注释起到了分组和说明的作用。# 合法命名和# 非法命名(会报错)把示例分成两个部分,方便阅读;行尾的注释则具体解释了报错原因,例如1st_name不能以数字开头,class是 Python 关键字不能用作变量名。
3. 变量的赋值与基本类型
Python 中通过等号=进行赋值操作。常见的变量类型包括整数、浮点数、字符串、布尔值等。
# 整数 age = 25 浮点数 price = 19.99 字符串 name = "Python" 布尔值 is_valid = True 使用 type() 查看变量类型 print(type(age)) # <class 'int'> print(type(price)) # <class 'float'> print(type(name)) # <class 'str'> print(type(is_valid)) # <class 'bool'>这里的注释用于标注每个变量的类型:# 整数、# 浮点数、# 字符串、# 布尔值分别对应下方定义的变量。行尾注释则展示了type()函数的输出结果,例如# <class 'int'>表示age的类型是整数。
在 Python 中,int 可以表示的数据范围是“无穷的”,int 可以根据要表示的数据大小自动扩容,因此,在 Python 中也不存在 long、short、byte 等类型。
Python中浮点数是float,他是双精度浮点数。
Python中没有字符类型,只有字符串类型,'a'表示只有一个字符的字符串,正是因为python中没有字符和字符串的区分,所以''和""都能表示字符串。
4. 多重赋值与变量交换
Python 支持在一行中给多个变量赋值,也可以非常简洁地交换两个变量的值。
# 多重赋值 a, b, c = 1, 2, 3 print(a, b, c) # 输出: 1 2 3 交换变量值 x = 10 y = 20 x, y = y, x print(x, y) # 输出: 20 10 多个变量指向同一个值 m = n = 100 print(m, n) # 输出: 100 100这段代码用注释把三种用法分开:# 多重赋值演示一行给多个变量赋值;# 交换变量值演示通过x, y = y, x交换两个变量的值;# 多个变量指向同一个值演示m = n = 100让多个变量指向同一个对象。行尾注释标注了每段代码的输出结果。
5. 变量的作用域
变量的作用域决定了变量在哪些位置可以被访问。Python 中主要有局部作用域和全局作用域。
# 全局变量 global_var = "全局变量" def my_func(): # 局部变量 local_var = "局部变量" print(local_var) print(global_var) # 可以访问全局变量 my_func() print(local_var) # 报错:局部变量在函数外部不可访问如果需要在函数内部修改全局变量,需要使用global关键字声明:
count = 0 def increment(): global count count += 1 increment() print(count) # 输出: 16. 变量的删除与内存管理
使用del语句可以删除变量,释放其对对象的引用。Python 的垃圾回收机制会自动回收不再被引用的内存。
temp = 42 print(temp) # 输出: 42 del temp print(temp) # 报错:NameError,变量已被删除7. 常量与类型提示
Python 没有真正的常量机制,通常约定使用全大写字母命名来表示常量。Python 3.5 之后引入了类型提示,可以让代码更清晰。
# 约定常量(全大写) MAX_SIZE = 100 PI = 3.14159 类型提示 def greet(name: str) -> str: return f"Hello, {name}" age: int = 30 print(greet("Python")) # 输出: Hello, Python8. 总结
变量是 Python 编程的基础,掌握变量的命名、赋值、作用域和内存管理,是写出高质量代码的前提。建议在实际编码中遵循 PEP 8 命名规范,合理使用类型提示,并注意区分局部变量与全局变量的使用场景。
注意:在python中一个语句写完了,可以加上封号,也可以不加,一般情况下是不加的,但是加了也不算错。