Python 进阶
函数
函数定义和调用
def greet(name, age=18):
"""问候函数,带有默认参数"""
return f"你好,{name}!你今年 {age} 岁。"
# 函数调用
message1 = greet("Alice")
message2 = greet("Bob", 25)
print(message1) # 你好,Alice!你今年 18 岁。
print(message2) # 你好,Bob!你今年 25 岁。
可变参数
def sum_numbers(*args):
"""计算任意数量数字的和"""
return sum(args)
def print_info(**kwargs):
"""打印关键字参数信息"""
for key, value in kwargs.items():
print(f"{key}: {value}")
# 使用示例
result = sum_numbers(1, 2, 3, 4, 5) # 15
print_info(name="Alice", age=25, city="北京")
面向对象编程
类和对象
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
return f"我是 {self.name},今年 {self.age} 岁"
def have_birthday(self):
self.age += 1
print(f"{self.name} 过生日了!现在 {self.age} 岁")
# 创建对象
person1 = Person("Alice", 25)
print(person1.introduce())
person1.have_birthday()
继承
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age)
self.student_id = student_id
self.courses = []
def enroll_course(self, course):
self.courses.append(course)
print(f"{self.name} 选修了 {course} 课程")
def introduce(self):
base_intro = super().introduce()
return f"{base_intro},学号是 {self.student_id}"
# 使用继承
student = Student("Bob", 20, "S001")
print(student.introduce())
student.enroll_course("Python编程")
异常处理
def divide_numbers(a, b):
try:
result = a / b
return result
except ZeroDivisionError:
print("错误:除数不能为零")
return None
except TypeError:
print("错误:参数必须是数字")
return None
finally:
print("计算完成")
# 使用示例
print(divide_numbers(10, 2)) # 5.0
print(divide_numbers(10, 0)) # 错误:除数不能为零
print(divide_numbers(10, "a")) # 错误:参数必须是数字
文件操作
# 写入文件
with open("example.txt", "w", encoding="utf-8") as file:
file.write("Hello, Python!\n")
file.write("这是第二行\n")
# 读取文件
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
# 逐行读取
with open("example.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())
列表推导式
# 基本列表推导式
numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares) # [1, 4, 9, 16, 25]
# 带条件的列表推导式
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares) # [4, 16]
# 字典推导式
word_lengths = {word: len(word) for word in ["apple", "banana", "cherry"]}
print(word_lengths) # {'apple': 5, 'banana': 6, 'cherry': 6}