Python入门指南(进阶篇):面向对象编程与常用模块

https://www.freecodecamp.org/news/content/images/2020/12/Python-1.png

面向对象编程(OOP)

类与对象基础

python

复制

下载

class Dog:
    """一个表示狗的简单类"""
    
    def __init__(self, name, age):
        """初始化属性name和age"""
        self.name = name
        self.age = age
        
    def sit(self):
        """模拟狗坐下"""
        print(f"{self.name} is now sitting.")
        
    def roll_over(self):
        """模拟狗打滚"""
        print(f"{self.name} rolled over!")

# 创建实例
my_dog = Dog('Willie', 6)
print(f"My dog's name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old.")
my_dog.sit()
my_dog.roll_over()

https://media.geeksforgeeks.org/wp-content/uploads/20200506214744/Class-Objects-in-Python.png

继承与多态

python

复制

下载

class Car:
    """汽车类"""
    
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
        
    def get_descriptive_name(self):
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()
    
    def read_odometer(self):
        print(f"This car has {self.odometer_reading} miles on it.")

class ElectricCar(Car):
    """电动汽车,继承自Car"""
    
    def __init__(self, make, model, year):
        super().__init__(make, model, year)
        self.battery_size = 75
        
    def describe_battery(self):
        print(f"This car has a {self.battery_size}-kWh battery.")

my_tesla = ElectricCar('tesla', 'model s', 2019)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()

常用内置模块

os模块 - 操作系统交互

python

复制

下载

import os

# 获取当前工作目录
print(os.getcwd())

# 列出目录内容
print(os.listdir())

# 创建目录
os.makedirs('test_dir', exist_ok=True)

# 文件路径操作
file_path = os.path.join('test_dir', 'test.txt')
print(f"文件路径: {file_path}")

https://www.tutorialspoint.com/python/images/python_os.jpg

datetime模块 - 日期时间处理

python

复制

下载

from datetime import datetime, timedelta

# 获取当前时间
now = datetime.now()
print(f"当前时间: {now}")

# 格式化日期
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"格式化后: {formatted}")

# 时间计算
one_week_later = now + timedelta(weeks=1)
print(f"一周后: {one_week_later}")

# 解析字符串为日期
date_str = "2023-01-15"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"解析后的日期: {parsed_date}")

虚拟环境与包管理

创建和使用虚拟环境

bash

复制

下载

# 创建虚拟环境
python -m venv myenv

# 激活虚拟环境 (Windows)
myenv\Scripts\activate

# 激活虚拟环境 (macOS/Linux)
source myenv/bin/activate

https://miro.medium.com/max/1400/1*_8yTgZPZwMZqA1vWq4X9FA.png

使用pip管理包

bash

复制

下载

# 安装包
pip install requests pandas

# 列出已安装包
pip list

# 生成requirements文件
pip freeze > requirements.txt

# 根据requirements文件安装
pip install -r requirements.txt

实战项目:简易待办事项应用

python

复制

下载

import json
from datetime import datetime

class TodoApp:
    """简易待办事项应用"""
    
    def __init__(self, filename='todos.json'):
        self.filename = filename
        self.todos = self._load_todos()
        
    def _load_todos(self):
        try:
            with open(self.filename, 'r') as f:
                return json.load(f)
        except FileNotFoundError:
            return []
            
    def _save_todos(self):
        with open(self.filename, 'w') as f:
            json.dump(self.todos, f, indent=4)
    
    def add_todo(self, task):
        """添加新待办事项"""
        todo = {
            'id': len(self.todos) + 1,
            'task': task,
            'created_at': datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
            'completed': False
        }
        self.todos.append(todo)
        self._save_todos()
        print(f"已添加任务: {task}")
    
    def list_todos(self):
        """列出所有待办事项"""
        print("\n待办事项列表:")
        for todo in self.todos:
            status = "✓" if todo['completed'] else " "
            print(f"{todo['id']}. [{status}] {todo['task']} ({todo['created_at']})")
    
    def complete_todo(self, todo_id):
        """标记待办事项为完成"""
        for todo in self.todos:
            if todo['id'] == todo_id:
                todo['completed'] = True
                self._save_todos()
                print(f"已完成任务: {todo['task']}")
                return
        print(f"未找到ID为{todo_id}的任务")

def main():
    app = TodoApp()
    
    while True:
        print("\n1. 添加任务")
        print("2. 查看任务")
        print("3. 完成任务")
        print("4. 退出")
        
        choice = input("请选择操作: ")
        
        if choice == '1':
            task = input("请输入任务内容: ")
            app.add_todo(task)
        elif choice == '2':
            app.list_todos()
        elif choice == '3':
            todo_id = int(input("请输入要完成的任务ID: "))
            app.complete_todo(todo_id)
        elif choice == '4':
            print("再见!")
            break
        else:
            print("无效输入,请重新选择")

if __name__ == "__main__":
    main()

https://miro.medium.com/max/1400/1*_Z6JzF4VXvXJ7Q5Q5Q5Q5Q.png

调试技巧

使用print调试

python

复制

下载

def calculate_average(numbers):
    print(f"[调试] 输入数据: {numbers}")  # 调试输出
    total = sum(numbers)
    print(f"[调试] 总和: {total}")       # 调试输出
    avg = total / len(numbers)
    print(f"[调试] 平均值: {avg}")       # 调试输出
    return avg

scores = [85, 90, 78, 92, 88]
result = calculate_average(scores)
print(f"最终结果: {result}")

使用pdb调试器

python

复制

下载

import pdb

def problematic_function(data):
    pdb.set_trace()  # 设置断点
    result = []
    for item in data:
        processed = item * 2
        result.append(processed)
    return result

data = [1, 2, 3, 'a', 5]
print(problematic_function(data))

https://miro.medium.com/max/1400/1*_Z6JzF4VXvXJ7Q5Q5Q5Q5Q.png

性能优化建议

  1. 使用内置函数和库:它们通常用C实现,速度更快

  2. 避免全局变量:局部变量访问更快

  3. 使用列表推导式:比普通循环更高效

  4. 适当使用生成器:节省内存

  5. 缓存重复计算结果:避免重复计算

python

复制

下载

# 列表推导式示例
squares = [x**2 for x in range(10) if x % 2 == 0]

# 生成器示例
even_numbers = (x for x in range(100) if x % 2 == 0)

# 使用functools.lru_cache缓存结果
from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

结语与学习路径

https://www.edureka.co/blog/wp-content/uploads/2019/08/Python-Tutorial.png

通过这三篇Python入门指南,你已经掌握了:

  • 基础语法和数据结构

  • 函数和文件操作

  • 面向对象编程

  • 常用标准库使用

  • 简单项目开发

下一步建议:

  1. 选择一个感兴趣的领域深入(Web、数据科学、自动化等)

  2. 参与开源项目或自己创建项目

  3. 学习Python设计模式和最佳实践

  4. 探索异步编程(asyncio)

  5. 持续练习,解决实际问题

记住,编程是一项实践技能,多写代码是最好的学习方式!Happy Coding! 🐍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值