一、变量命名:代码世界的身份证
1.1 基础命名法则
Python变量命名三大铁律:
-
首字符限制:必须以字母或下划线开头,禁止数字开头
-
合法字符集 :仅允许字母、数字和下划线(
_
) -
避开保留字 :禁用
if
、for
等35个关键字
合法示例:
python
_user_age = 25 # 下划线开头
bookPrice2023 = 99 # 包含数字
MAX_LENGTH = 100 # 全大写常量
非法案例:
python
3d_model = "car" # 数字开头
first-name = "Tom" # 连字符非法
class = "A班" # 使用关键字
1.2 PEP8进阶规范
命名场景 | PEP8规范 | 反例 |
---|---|---|
变量/函数名 | 蛇形命名法 | userName |
类名 | 大驼峰式 | data_processor |
常量 | 全大写+下划线 | MaxSpeed |
私有变量 | 单下划线前缀 | __secret_code |
PyCharm智能提示:
-
违规命名出现黄色波浪线
-
按
Alt+Enter
快速修复格式问题
1.3 中文变量名争议
支持派用例:
python
学生列表 = ["张三", "李四"]
print(学生列表[0]) # 正常输出"张三"
反对派理由:
-
跨平台乱码风险(如Linux默认编码问题)
-
协作开发障碍(混合编程环境)
-
自动补全失效(部分IDE支持不足)
折中方案:
-
数学公式翻译:
Δ = 0.5 * b**2 - 4*a*c
-
临时调试变量:
临时值 = result * 0.8
-
避免在生产代码中使用
二、数字类型:精确与近界的博弈
2.1 整型与浮点型特性对比
运算差异实验:
python
# 除法自动升级
print(4 / 2) # 2.0 → float
print(5 // 2) # 2 → int
# 混合运算规则
result = 3 + 2.5 # 自动转为float
print(type(result)) # <class 'float'>
精度陷阱演示:
python
print(0.1 + 0.2) # 0.30000000000000004
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2')) # 精确0.3
2.2 数值极限探索
超大整数处理:
python
# 普通整数
big_num = 10**100 # 直接计算
print(big_num) # 完整显示
# 科学计数法
avogadro = 6.022e23
print(f"{avogadro:.0f}") # 602200000000000000000000
三、字符串:文本的艺术
3.1 索引与切片进阶
多维切片技巧:
python
text = "Python编程从入门到精通"
print(text[6:8]) # 编程
print(text[::-1]) # 通精到门入从程编nohtyP
print(text[::2]) # Pto编从入到精
实用场景:
python
# 文件后缀提取
filename = "report_2023.pdf"
print(filename[-3:]) # pdf
# 手机号脱敏
phone = "13812345678"
print(phone[:3] + "****" + phone[-4:]) # 138****5678
3.2 转义字符全解析
常用转义序列:
python
print("路径:C:\\Users\\Desktop") # 转义反斜杠
print("第一行\n第二行") # 换行符
print("温度:\u2103") # Unicode℃符号
原始字符串妙用:
python
regex = r"\d{3}-\d{8}" # 匹配电话号
print(regex) # \d{3}-\d{8}
四、列表与元组:变革与坚守
4.1 列表的七十二变
动态修改示例:
python
fruits = ["苹果", "香蕉"]
fruits.insert(1, "橙子") # 插入元素
fruits[2] = "芒果" # 修改元素
del fruits[0] # 删除元素
print(fruits) # ['橙子', '芒果']
高级技巧:
python
# 列表推导式
matrix = [[j for j in range(3)] for i in range(3)]
# [[0,1,2], [0,1,2], [0,1,2]]
# 多重拆包
a, *rest, z = [1,2,3,4,5] # a=1, rest=[2,3,4], z=5
4.2 元组的不可变优势
特性验证:
python
colors = ("红", "绿", "蓝")
# colors[0] = "黑" # 引发TypeError
# 元组拆包
x, y = (10, 20)
print(y) # 20
内存效率测试:
python
import sys
lst = [1,2,3,4,5]
tup = (1,2,3,4,5)
print(sys.getsizeof(lst)) # 92(示例)
print(sys.getsizeof(tup)) # 72(示例)
五、类型转换:安全与风险的边界
5.1 显式转换的安全指南
安全转换示例:
python
# 浮点转整型
print(int(3.9)) # 3(直接截断)
# 字符串转数字
valid_str = "123"
print(float(valid_str)) # 123.0
危险地带:
python
# int("3.14") # ValueError
# list(123) # TypeError
# float("NaN") # 特殊浮点值
5.2 隐式转换的自动魔法
常见隐式转换:
python
print(True + 5) # 6 → int
print(3 + 2.5) # 5.5 → float
print(str(10) + '年') # "10年" → str
布尔转换真相:
python
print(bool([])) # False
print(bool(" ")) # True
print(bool(0.0)) # False
print(bool("0")) # True
六、调试工坊:典型错误破解
6.1 变量引发的五个经典错误
错误案例集:
python
2nd = "亚军" # 数字开头
global = 100 # 关键字占用
user list = [] # 空格非法
price$ = 9.9 # 特殊符号
数据 = 100 # 中文变量在服务器报错
6.2 类型错误急救包
类型错误解析:
python
age = input("年龄:") # 返回字符串
print(age + 1) # TypeError
nums = (1,2,3)
nums[0] = 5 # 元组不可变错误
解决方案:
python
# 安全转换年龄
age = int(input("年龄:").strip())