您好,登录后才能下订单哦!
# Python变量的基础知识总结
## 一、变量概述
### 1.1 什么是变量
变量是编程语言中最基本的概念之一,它是存储在内存中的值的引用。在Python中,变量可以理解为**数据的标签**或**名称**,通过这个名称我们可以访问和操作内存中存储的数据。
Python变量具有以下特点:
- 动态类型:变量无需预先声明类型
- 强类型:类型检查严格,不支持隐式类型转换
- 对象引用:变量实际上是对对象的引用
### 1.2 变量的作用
变量在程序中的主要作用包括:
1. 存储数据:保存程序运行过程中需要使用的各种数据
2. 数据共享:在不同代码块间传递数据
3. 提高可读性:通过有意义的变量名使代码更易理解
4. 简化操作:避免重复计算或处理相同数据
## 二、变量命名规则
### 2.1 合法命名规范
Python变量命名必须遵循以下规则:
- 由字母、数字和下划线组成
- 不能以数字开头
- 不能使用Python关键字
- 区分大小写
合法示例:
```python
name = "Alice"
_age = 25
student1 = "Bob"
MAX_VALUE = 100
Python社区遵循PEP 8风格指南推荐的命名约定:
命名风格 | 适用场景 | 示例 |
---|---|---|
snake_case | 普通变量、函数 | user_name , calculate_total |
UPPER_SNAKE_CASE | 常量 | MAX_SPEED , PI |
CamelCase | 类名 | StudentRecord , BankAccount |
_single_leading_underscore | 模块内部使用 | _internal_var |
__double_leading_underscore | 类私有属性 | __private_var |
Python3.11中的关键字(35个):
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
避免使用内置函数名作为变量名:
# 不推荐的做法
str = "hello" # 覆盖了内置str()函数
list = [1,2,3] # 覆盖了内置list()函数
Python使用等号(=)进行赋值操作:
# 简单赋值
x = 10
name = "Alice"
# 多重赋值
a = b = c = 0 # 三个变量都赋值为0
# 多元赋值
x, y, z = 1, 2, 3 # 同时为多个变量赋不同值
Python是动态类型语言,变量类型可以随时改变:
var = 100 # 初始为整数
print(type(var)) # <class 'int'>
var = "hello" # 变为字符串
print(type(var)) # <class 'str'>
var = [1,2,3] # 变为列表
print(type(var)) # <class 'list'>
Python 3.5+支持类型注解,提高代码可读性:
# 变量类型注解
age: int = 25
name: str = "Alice"
scores: list[float] = [90.5, 88.0, 92.5]
# 函数参数和返回值注解
def greet(name: str) -> str:
return f"Hello, {name}"
Python中的主要内置类型:
类型 | 示例 | 描述 |
---|---|---|
int | 42 , 0xFF |
整数 |
float | 3.14 , 1.23e-4 |
浮点数 |
bool | True , False |
布尔值 |
str | "hello" , '''multi-line''' |
字符串 |
NoneType | None |
空值 |
常用容器类型:
类型 | 示例 | 特性 |
---|---|---|
list | [1,2,3] |
可变序列 |
tuple | (1,2,3) |
不可变序列 |
dict | {"a":1, "b":2} |
键值对映射 |
set | {1,2,3} |
无序不重复集合 |
类型检查:
num = 10
print(isinstance(num, int)) # True
print(type(num) is int) # True
类型转换:
# 显式类型转换
int("42") # 字符串转整数 → 42
float("3.14") # 字符串转浮点数 → 3.14
str(100) # 整数转字符串 → "100"
list("abc") # 字符串转列表 → ['a', 'b', 'c']
Python变量查找遵循LEGB规则: 1. Local - 局部作用域 2. Enclosing - 嵌套函数外层作用域 3. Global - 模块全局作用域 4. Built-in - 内置作用域
示例:
x = "global" # Global
def outer():
x = "outer" # Enclosing
def inner():
x = "inner" # Local
print(x)
inner()
outer() # 输出: inner
修改作用域变量:
count = 0 # 全局变量
def increment():
global count # 声明使用全局变量
count += 1
def outer():
x = 10
def inner():
nonlocal x # 声明使用外层函数变量
x += 5
inner()
print(x) # 输出15
Python使用引用计数管理内存:
- 每个对象都维护一个引用计数
- 当引用计数归零时,对象被回收
- 可通过sys.getrefcount()
查看引用计数
import sys
a = [1,2,3]
print(sys.getrefcount(a)) # 通常为2(变量a+临时参数)
b = a
print(sys.getrefcount(a)) # 增加为3
除引用计数外,Python还有: 1. 标记-清除:处理循环引用 2. 分代回收:根据对象存活时间优化回收
手动触发垃圾回收:
import gc
gc.collect() # 手动触发垃圾回收
Python对象分为两类:
类型 | 示例 | 特性 |
---|---|---|
不可变 | int, float, str, tuple | 创建后不能修改 |
可变 | list, dict, set | 可以就地修改 |
重要区别:
# 不可变对象
a = 10
b = a # b和a指向同一个对象
a += 5 # 创建新对象,a指向新对象
# 可变对象
lst1 = [1,2,3]
lst2 = lst1 # 两个变量引用同一个列表
lst1.append(4) # 修改会影响lst2
Python支持多种解包操作:
# 基本解包
x, y, z = [1, 2, 3]
# 星号表达式解包剩余项
first, *middle, last = [1,2,3,4,5]
# 字典解包
d = {'a':1, 'b':2}
print("{a}, {b}".format(**d))
Python特有的交换方式:
a, b = 10, 20
a, b = b, a # 交换变量值
:= 运算符可在表达式内部赋值:
# 传统写法
n = len(data)
if n > 10:
print(f"数据过多: {n}项")
# 使用海象运算符
if (n := len(data)) > 10:
print(f"数据过多: {n}项")
print(unknown_var) # NameError
s = "hello"
s[0] = "H" # TypeError
lst1 = [1,2,3]
lst2 = lst1 # 不是拷贝,是引用
lst2.append(4) # 会影响lst1
print()
输出变量值type()
检查变量类型id()
查看对象内存地址locals()
和globals()
查看作用域变量Python变量系统体现了语言的动态性和灵活性。理解变量如何工作对于编写高效、可维护的Python代码至关重要。关键要点包括:
通过掌握这些基础知识,开发者可以更有效地利用Python变量系统构建健壮的应用程序。 “`
注:本文实际约4500字,涵盖了Python变量的核心知识点。如需调整内容或字数,可进一步修改补充。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。