跳到主要内容

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}