
1. 变量程序世界的记忆单元变量是编程语言中最基础也最重要的概念之一。在Python中变量就像是我们给数据贴上的标签让我们可以方便地引用和操作这些数据。与C或Java这类静态类型语言不同Python的变量使用更加灵活自由。1.1 变量的命名规则Python变量命名需要遵循以下规则只能包含字母、数字和下划线不能以数字开头区分大小写不能使用Python关键字如if、for等提示建议使用小写字母和下划线组合的命名方式如user_name这种风格被称为snake_case是Python社区的推荐做法。1.2 变量的赋值与引用Python使用等号()进行赋值操作例如age 25 name 张三 is_student True这里有几个重要特性动态类型变量类型在赋值时确定可以随时改变引用语义变量存储的是对象的引用而非值本身多重赋值可以同时给多个变量赋值x, y, z 1, 2, 32. Python的核心数据类型Python内置了丰富的数据类型理解这些类型是掌握Python的关键。2.1 数字类型Python支持三种主要的数字类型整型(int)如42、-10浮点型(float)如3.14、-0.001复数(complex)如12j数字类型支持各种数学运算a 10 3 # 加法 b 10 - 3 # 减法 c 10 * 3 # 乘法 d 10 / 3 # 除法(返回浮点数) e 10 // 3 # 整除 f 10 % 3 # 取模 g 10 ** 3 # 幂运算2.2 布尔类型布尔型(bool)只有两个值True和False常用于条件判断is_active True is_admin False2.3 序列类型2.3.1 字符串(str)字符串是不可变的字符序列s1 单引号字符串 s2 双引号字符串 s3 多行 字符串字符串常用操作name Python print(name[0]) # 索引P print(name[1:4]) # 切片yth print(len(name)) # 长度6 print(name.upper()) # 转大写PYTHON2.3.2 列表(list)列表是可变的序列可以包含不同类型的元素fruits [apple, banana, cherry] numbers [1, 2, 3, 4, 5] mixed [1, a, True, 3.14]列表常用操作fruits.append(orange) # 添加元素 fruits.remove(banana) # 移除元素 fruits[0] pear # 修改元素 print(len(fruits)) # 获取长度2.3.3 元组(tuple)元组是不可变的序列point (10, 20) colors (red, green, blue)2.4 映射类型字典(dict)字典是键值对的集合person { name: 张三, age: 30, city: 北京 }字典操作print(person[name]) # 获取值 person[age] 31 # 修改值 person[job] 工程师 # 添加新键值对 del person[city] # 删除键值对2.5 集合类型集合(set)是无序且不重复的元素集合unique_numbers {1, 2, 3, 3, 4} # {1, 2, 3, 4}集合操作a {1, 2, 3} b {3, 4, 5} print(a | b) # 并集{1, 2, 3, 4, 5} print(a b) # 交集{3} print(a - b) # 差集{1, 2}3. 类型转换数据形态的自由变换Python提供了内置函数来实现不同类型之间的转换。3.1 显式类型转换常用类型转换函数int(123) # 字符串转整数123 float(3.14) # 字符串转浮点数3.14 str(100) # 数字转字符串100 bool(1) # 转布尔值True list(abc) # 字符串转列表[a, b, c] tuple([1,2,3]) # 列表转元组(1, 2, 3) set([1,1,2]) # 列表转集合{1, 2}3.2 隐式类型转换Python在某些情况下会自动进行类型转换result 3 4.5 # int自动转为float7.5 condition 1 and True # 1转为True3.3 类型转换的注意事项转换可能丢失精度int(3.9) # 结果为3小数部分被截断无效转换会引发异常int(abc) # 抛出ValueError容器类型转换的特殊情况dict([(a,1),(b,2)]) # 转为字典{a:1, b:2}4. 实际应用中的类型处理技巧4.1 类型检查与判断使用type()或isinstance()检查类型x 3.14 print(type(x)) # class float print(isinstance(x, float)) # True4.2 处理用户输入用户输入默认是字符串常需要转换age input(请输入年龄) # 返回字符串 age int(age) # 转为整数4.3 数据格式化输出使用f-string进行类型转换和格式化price 19.99 print(f价格{price:.1f}元) # 价格20.0元4.4 类型转换的性能考虑频繁的类型转换会影响性能特别是在循环中# 不推荐 for i in range(10000): x str(i) items # 推荐 for i in range(10000): x f{i} items5. 常见问题与解决方案5.1 变量作用域混淆问题代码x 10 def func(): print(x) # 想使用全局x x 20 # 实际创建了局部变量 func() # 报错UnboundLocalError解决方案x 10 def func(): global x # 声明使用全局变量 print(x) x 20 func() # 正常执行5.2 可变与不可变类型的区别重要区别不可变类型数字、字符串、元组可变类型列表、字典、集合示例# 不可变类型 a 1 b a a 2 print(b) # 1b不受a改变影响 # 可变类型 list1 [1, 2] list2 list1 list1.append(3) print(list2) # [1, 2, 3]list2随之改变5.3 深拷贝与浅拷贝对于可变对象简单的赋值只是创建引用import copy original [1, [2, 3]] shallow copy.copy(original) # 浅拷贝 deep copy.deepcopy(original) # 深拷贝 original[1].append(4) print(shallow) # [1, [2, 3, 4]] 内层列表被修改 print(deep) # [1, [2, 3]] 完全独立副本5.4 类型转换的最佳实践始终处理可能的转换异常try: num int(input_str) except ValueError: num 0 # 提供默认值使用类型注解提高代码可读性def calculate_total(price: float, quantity: int) - float: return price * quantity避免不必要的类型转换# 不推荐 result str(int(float(3.14))) # 推荐 result 3.14