-
第2章 Python编程基础与环境准备
第2章 Python编程基础与环境准备
2.1 Python语言特性与优势
Python是一种解释型高级编程语言,其设计哲学强调“简洁明了”与“可读性”,核心特性如下:
动态类型机制:变量无需显式声明类型,运行时自动绑定值的类型(如x = 5为整数,x = "hello"转为字符串),灵活度高但需注意类型相关错误。
简洁语法:通过缩进(而非大括号)划分代码块,减少冗余符号;内置丰富的语法糖(如列表推导式、上下文管理器with),用更少代码实现复杂逻辑。
多范式支持:兼容面向对象(类与继承)、函数式(高阶函数、匿名函数lambda)、过程式编程风格,适应不同场景需求。
跨平台与可扩展性:可运行于Windows、Linux、macOS等系统;支持C/C++扩展(通过ctypes或Cython),兼顾开发效率与性能。
丰富的标准库与生态:内置模块覆盖文件I/O、网络通信、数据处理等基础功能;第三方库(如numpy、pandas、requests)进一步扩展应用领域。
2.2 Python基础语法回顾
2.2.1 变量与数据类型
变量是存储数据的命名容器,命名需遵循规则:只能包含字母、数字、下划线,且不能以数字开头(如age2合法,2age非法),区分大小写(Age与age是不同变量)。
Python核心数据类型包括:
整数(int):无长度限制的整数,支持十进制(123)、二进制(0b101)、八进制(0o17)、十六进制(0x1f)表示。
浮点数(float):带小数点的数值(3.14)或科学计数法(1e-3即0.001),精度受限于双精度浮点数标准(约15-17位有效数字)。
字符串(str): Unicode字符序列,用单引号('hello')、双引号("world")或三引号('''多行文本''')定义,不可修改(修改需创建新字符串)。
布尔值(bool):仅包含True(1)与False(0),用于逻辑判断,支持and(与)、or(或)、not(非)运算。
2.2.2 运算符与表达式
Python支持多种运算符,按功能分为:
算术运算符:+(加)、-(减)、*(乘)、/(除,结果为float)、//(整除,向下取整)、%(取余)、**(幂运算)。
例:5 // 2 = 2,5 % 2 = 1,2 **3 = 8。
比较运算符:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于),返回布尔值。
例:3 > 5 → False,"abc" == "abc" → True。
赋值运算符:=(基础赋值)、+=(累加赋值,如x += 3等价于x = x + 3)、*=(累乘赋值)等。
逻辑运算符:and(短路与,前为False则不执行后项)、or(短路或,前为True则不执行后项)、not(逻辑非)。
例:False and (1/0) → False(避免除零错误),True or (1/0) → True。
2.2.3 控制流
条件语句(if-elif-else)用于根据条件执行不同代码块:
python
score = 85
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")
循环语句用于重复执行代码块:
for循环:遍历序列(如列表、字符串)或可迭代对象:
python
for char in "Python":
print(char, end=" ") # 输出:P y t h o n
配合range()生成整数序列:for i in range(5)(i=0,1,2,3,4)。
while循环:当条件为True时持续执行,需避免无限循环:
python
count = 0
while count < 3:
print("循环中")
count += 1 # 计数变量更新,避免无限循环
异常处理(try-except)用于捕获并处理运行时错误,防止程序崩溃:
python
try:
result = 10 / 0 # 可能触发除零错误
except ZeroDivisionError:
print("错误:除数不能为零") # 捕获特定异常并处理
finally:
print("无论是否出错,都会执行") # 可选,用于资源释放(如关闭文件)
2.3 Python面向对象编程基础
2.3.1 类与对象
类(class) 是对象的模板,定义对象的属性(数据)与方法(操作);对象是类的实例,具有类定义的属性和方法。
类的定义与实例化:
python
class Student:
# 构造方法:初始化对象属性,self为实例自身引用
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
# 实例方法:操作实例属性
def introduce(self):
return f"我叫{self.name},今年{self.age}岁"
# 实例化对象:调用类并传入参数
stu = Student("张三", 20)
print(stu.introduce()) # 输出:我叫张三,今年20岁
类属性与实例属性:类属性属于类本身,所有实例共享;实例属性仅属于单个实例:
python
class Car:
wheel_count = 4 # 类属性:所有汽车都有4个轮子
def __init__(self, color):
self.color = color # 实例属性:每个汽车颜色可能不同
car1 = Car("红色")
car2 = Car("蓝色")
print(car1.wheel_count) # 输出:4(共享类属性)
print(car1.color) # 输出:红色(实例属性)
2.3.2 继承与多态
继承允许子类复用父类的属性和方法,并扩展新功能。通过class 子类(父类):定义继承关系:
python
class Animal:
def eat(self):
print("动物需要进食")
class Dog(Animal): # 继承Animal类
def bark(self): # 子类新增方法
print("汪汪叫")
def eat(self): # 重写父类方法(多态)
print("狗吃骨头")
dog = Dog()
dog.eat() # 输出:狗吃骨头(调用重写的方法)
dog.bark() # 输出:汪汪叫(子类新增方法)
super()函数用于调用父类的方法,避免硬编码父类名:
python
class Cat(Animal):
def eat(self):
super().eat() # 调用父类Animal的eat方法
print("猫吃鱼")
cat = Cat()
cat.eat() # 输出:动物需要进食 猫吃鱼(先执行父类方法,再扩展)
多态指不同子类对同一方法的实现不同,调用时根据对象类型动态选择方法:
python
def feed(animal):
animal.eat() # 传入不同动物对象,执行不同eat方法
feed(Dog()) # 输出:狗吃骨头
feed(Cat()) # 输出:动物需要进食 猫吃鱼
2.4 Python内置数据结构与工具
2.4.1 序列类型
序列类型是元素按顺序排列的集合,支持索引(访问单个元素)和切片(访问子序列),包括列表、元组、字符串。
列表(list):可变序列,元素可修改,用[]定义:
常用操作:
oappend(x):末尾添加元素x(O(1));
oinsert(i, x):在索引i处插入x(O(n),需移动后续元素);
opop(i):删除并返回索引i处元素(默认删除末尾,O(1);删除中间元素O(n));
o切片:list[start










