基于已有Go/Java/C的开发经验,Python可以在很短时间内掌握基础语法和核心概念。以下是学习要点和完整Demo:
1 语法
1.1 数据类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 变量和数据类型(动态类型) name = "Python" # 字符串 version = 3.9 # 整数 rating = 9.5 # 浮点数 is_awesome = True # 布尔值 nothing = None # 空值 # 集合类型 fruits = ["apple", "banana", "orange"] # 列表(可变) coordinates = (40.7128, -74.0060) # 元组(不可变) person = {"name": "John", "age": 30} # 字典 unique_numbers = {1, 2, 3, 3, 4} # 集合(自动去重) # 类型注解(可选,类似Go/Java) def greet(name: str) -> str: return f"Hello, {name}" |
1.2 控制流
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# 条件语句 age = 25 if age < 18: print("Minor") elif 18 <= age < 65: print("Adult") else: print("Senior") # 循环 for i in range(5): # 0到4 print(i) for fruit in fruits: # 遍历列表 print(fruit) # 列表推导式(Python特色) squares = [x**2 for x in range(10) if x % 2 == 0] |
1.3 函数和类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# 函数定义 def calculate_area(length, width=1): # 默认参数 """计算面积""" # 文档字符串 return length * width # 类定义 class Person: def __init__(self, name, age): # 构造函数 self.name = name self.age = age def introduce(self): return f"I'm {self.name}, {self.age} years old" # 继承 class Student(Person): def __init__(self, name, age, student_id): super().__init__(name, age) self.student_id = student_id |
2 综合Demo:任务管理系统
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
""" 任务管理系统 - 展示Python核心特性 """ from typing import List, Dict, Optional from datetime import datetime, timedelta import json class Task: """任务类""" def __init__(self, title: str, description: str = "", priority: int = 1): self.title = title self.description = description self.priority = priority # 1-5, 5最高 self.created_at = datetime.now() self.completed = False self.tags: List[str] = [] def complete(self) -> None: """标记任务为完成""" self.completed = True def add_tag(self, tag: str) -> None: """添加标签""" if tag not in self.tags: self.tags.append(tag) def __str__(self) -> str: status = "✓" if self.completed else "◯" return f"[{status}] {self.title} (优先级: {self.priority})" def to_dict(self) -> Dict: """转换为字典(用于JSON序列化)""" return { "title": self.title, "description": self.description, "priority": self.priority, "created_at": self.created_at.isoformat(), "completed": self.completed, "tags": self.tags } class TaskManager: """任务管理器""" def __init__(self): self.tasks: List[Task] = [] def add_task(self, title: str, **kwargs) -> Task: """添加任务,支持关键字参数""" task = Task(title, **kwargs) self.tasks.append(task) return task def get_pending_tasks(self) -> List[Task]: """获取未完成的任务""" return [task for task in self.tasks if not task.completed] def get_high_priority_tasks(self, threshold: int = 3) -> List[Task]: """获取高优先级任务""" return [ task for task in self.tasks if task.priority >= threshold and not task.completed ] def complete_task(self, title: str) -> bool: """根据标题完成任务""" for task in self.tasks: if task.title == title and not task.completed: task.complete() return True return False def get_tasks_by_tag(self, tag: str) -> List[Task]: """根据标签筛选任务""" return [task for task in self.tasks if tag in task.tags] def get_task_statistics(self) -> Dict: """获取任务统计信息""" total = len(self.tasks) completed = sum(1 for task in self.tasks if task.completed) pending = total - completed # 使用字典推导式 priority_dist = { f"priority_{i}": sum(1 for task in self.tasks if task.priority == i) for i in range(1, 6) } return { "total": total, "completed": completed, "pending": pending, "completion_rate": completed / total if total > 0 else 0, "priority_distribution": priority_dist } def save_to_file(self, filename: str) -> None: """保存任务到文件""" data = [task.to_dict() for task in self.tasks] with open(filename, 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) def load_from_file(self, filename: str) -> None: """从文件加载任务""" try: with open(filename, 'r', encoding='utf-8') as f: data = json.load(f) self.tasks = [] for item in data: task = Task( item["title"], item["description"], item["priority"] ) task.completed = item["completed"] task.tags = item["tags"] self.tasks.append(task) except FileNotFoundError: print("文件不存在,创建新的任务列表") def main(): """主函数 - 演示使用""" manager = TaskManager() # 添加任务 task1 = manager.add_task( "学习Python基础", description="掌握Python核心语法", priority=5 ) task1.add_tag("学习") task1.add_tag("编程") manager.add_task("写项目文档", priority=3).add_tag("工作") manager.add_task("购买 groceries", priority=2).add_tag("生活") |