Skip to content

2576998022/Python_study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# Python学习笔记

## 一、学习计划(适合零基础初学者)

### 1. 学习目标
通过系统化的学习,使零基础学员掌握Python基础知识,为后续进行接口自动化测试打下坚实基础。

### 2. 学习阶段规划
#### 第一阶段:Python基础入门(2-3周)
1. Python环境搭建
   - Python安装
   - IDE选择(VS Code)
   - 第一个Python程序:Hello World

2. Python基础语法
   - 变量和数据类型(整数、浮点数、字符串、布尔值)
   - 注释的使用
   - print() 函数使用
   - 基本运算符(+、-、*、/、%)

3. 程序控制流
   - if条件判断
   - for循环
   - while循环
   - break和continue语句

#### 第二阶段:数据结构基础(2-3周)
1. 基本数据结构
   - 列表(List)的使用
   - 元组(Tuple)的使用
   - 字典(Dict)的使用
   - 集合(Set)的使用

2. 字符串操作
   - 字符串的基本操作
   - 字符串格式化
   - 常用字符串方法

#### 第三阶段:函数和模块(2周)
1. 函数基础
   - 函数的定义和调用
   - 参数传递
   - 返回值
   - 变量作用域

2. 模块使用
   - 导入模块
   - 常用内置模块
   - 第三方模块的安装和使用

#### 第四阶段:文件操作和异常处理(2周)
1. 文件操作
   - 文件的读写
   - 文件路径处理
   - CSV文件处理

2. 异常处理
   - try-except语句
   - 常见异常类型
   - 异常处理最佳实践

### 3. 学习资源
1. 在线教程:
   - 菜鸟教程 Python 基础:https://www.runoob.com/python3/python3-tutorial.html
   - 廖雪峰 Python 教程:https://www.liaoxuefeng.com/wiki/1016959663602400

2. 练习平台:
   - LeetCode:https://leetcode.cn/
   - 实验楼:https://www.lanqiao.cn/

## 二、开发环境配置

### 1. VS Code配置
1. 必装插件:
   - Code Runner:代码快速运行
   - Python:Python语言支持
   - Pylance:Python语言服务器
   - Python Extension Pack:Python扩展包

2. Code Runner设置:
   - 运行在集成终端
   - 自动保存文件
   - 运行前清除之前的输出
   - 支持中文输出

3. 快捷键:
   - 运行代码:Ctrl+Alt+N
   - 停止运行:Ctrl+Alt+M

### 2. 终端配置
- 默认终端:Windows命令提示符(CMD)
- 配置方式:
  1. 界面配置:命令面板 -> "Terminal: Select Default Profile" -> "Command Prompt"
  2. settings.json配置:设置默认终端为CMD

## 三、学习进度记录

### 2024年11月16日(第二次更新)
#### 新学习内容:
1. 函数基础
   - 函数的定义和调用
   - 函数参数(基本参数、默认参数、可变参数、关键字参数)
   - 函数返回值
   - 函数文档字符串(docstring)

#### 重点知识:
1. 函数定义
   - def 关键字定义函数
   - 参数列表
   - 函数体
   - return 语句

2. 参数类型
   - 基本参数:必须传入的参数
   - 默认参数:有默认值的参数
   - 可变参数:*args,接收任意数量的位置参数
   - 关键字参数:**kwargs,接收任意数量的关键字参数

3. 返回值
   - 单一返回值
   - 多个返回值(使用元组)
   - 无返回值(返回None)

4. 函数文档
   - 使用三引号编写文档
   - 说明函数用途
   - 描述参数和返回值

5. 可变参数(*args)
   - 使用 * 接收任意数量的位置参数
   - 在函数内部表现为元组
   - 常用于参数数量不确定的场景
   - 必须放在普通参数后面
   - 一个函数只能有一个*args参数
   - 可以通过 * 运算符解包序列

#### 实践要点:
1. 函数命名要清晰表达功能
2. 适当使用默认参数简

#### 已完成内容:
1. 数据结构基础学习
   - 列表(List)的基本操作和方法
   - 元组(Tuple)的特点和使用
   - 字典(Dict)的创建和操作
   - 集合(Set)的特性和应用

#### 重点知识:
1. 列表操作
   - 创建和访问列表
   - 常用方法:append(), insert(), pop(), remove()
   - 列表切片和索引

2. 元组特点
   - 不可变性
   - 创建和访问
   - 多变量赋值

3. 字典使用
   - 键值对概念
   - 创建和访问字典
   - get()方法的安全访问
   - 统计和计数应用

4. 集合操作
   - 元素唯一性
   - 集合运算(并集、交集、差集)
   - 常用方法:add(), remove()

#### 实践项目:
- 学生选课统计系统
  - 使用字典存储学生选课信息
  - 使用集合处理课程去重
  - 实现课程人数统计功能

#### 下一步计划:
准备学习第三阶段:函数和模块的内容

#### 注意事项:
1. 字典的get()方法很实用,特别是在统计场景
2. 集合适合处理需要去重的数据
3. 选择合适的数据结构对程序效率很重要

# Python参数使用说明

## 参数类型
1. 位置参数:按照位置顺序传递的参数
2. 关键字参数:使用参数名=值方式传递的参数
3. 可变位置参数(*args):接收任意数量的位置参数
4. 可变关键字参数(**kwargs):接收任意数量的关键字参数


## 使用则
1. 位置参数必须在关键字参数之前
2. 同一个参数不能既用位置又用关键字方式传递
3. 必选参数应该放在可选参数之前

## 最佳实践
1. 参数数量固定且较少时,使用位置参数
2. 参数较多或需要提高代码可读性时,使用关键字参数
3. 处理不确定数量的参数时,使用*args和**kwargs
4. 测试函数编写时,优先考虑代码的可读性和可维护性

## 示例代码
请参考上述示例代码来理解不同参数的使用方式

可变参数 args 和 kwargs
- *args:接收任意数量的位置参数,转换为元组
- **kwargs:接收任意数量的关键字参数,转换为字典

# 示例4:可变参数

def flexible_function(*args, **kwargs):
    print("位置参数:", args)    # 输出为元组
    print("关键字参数:", kwargs)  # 输出为字典

# 调用方式
flexible_function(1, 2, 3, name="小明", age=18)
# 输出:
# 位置参数: (1, 2, 3)
# 关键字参数: {'name': '小明', 'age': 18}

### 2024年11月16日(第三次更新)
#### 新学习内容:
1. Python模块基础
   - 模块的概念和用途
   - 模块的导入方式
   - 自定义模块创建
   - 模块的测试和使用

#### 重点知识:
1. 模块导入方式
   - import module
   - from module import function
   - import module as alias
   - from module import *(不推荐)

2. 模块创建
   - 模块就是.py文件
   - 模块内可以包含函数、变量、类
   - __name__ == "__main__" 的使用

3. 模块使用
   - 使用点号访问模块内容
   - 使用别名简化代码
   - 导入特定函数避免命名冲突

#### 实践要点:
1. 合理组织模块结构
2. 注意模块的命名规范
3. 避免循环导入
4. 使用恰当的导入方式

#### 下一步计划:
学习Python标准库的常用模块

## 2024年11月17日(第四次更新)
1. [完成] Python基础语法
2. [完成] 控制流程
3. [完成] 数据结构
4. [完成] 函数
5. [进行中] 模块和包
   - 模块的概念和使用
   - 包的创建和管理
   - __init__.py的作用:
     * 将目录标记为Python包
     * 包的初始化
     * 导入管理(import *)
     * 定义版本信息
     * 包级别文档
   - 模块导入方式:
     * import module
     * from module import name
     * from module import *
     * import module as alias
   - 相对导入和绝对导入
   - 模块搜索路径
6. [待学习] 面向对象编程

## 最佳实践
1. 模块名使用小写字母,可使用下划线
2. 包应该有清晰的层级结构
3. __init__.py 保持简洁
4. 合理使用相对导入
5. 避免循环导入
6. 提供清晰的文档字符串

## 下一步计划
- 学习面向对象编程基础
- 理解类和对象的概念
- 掌握继承和多态

## 2024年11月17日(第五次更新)
1. [完成] Python基础语法
2. [完成] 控制流程
3. [完成] 数据结构
4. [完成] 函数
5. [完成] 模块和包
6. [进行中] 面向对象编程
   - 类和对象的基本概念
   - 类的定义和实例化
   - 属性和方法
     * 类属性 vs 实例属性
     * 实例方法
     * 属性装饰器(@property)
   - 私有属性的使用场景:
     * 数据验证(如账户余额)
     * 状态管理(如游戏状态)
     * 计算属性(如矩形面积)
     * 依赖关系(如成绩平均分)
     * 缓存场景(如数据处理)

## 面向对象编程最佳实践
1. 命名规范
   - 类名使用大驼峰命名法(如 Student)
   - 属性和方法使用小写字母和下划线
   - 私有属性和方法使用单下划线开头

2. 属性访问控制
   - 使用 @property 装饰器控制属性访问
   - 在 setter 中进行数据验证
   - 合理使用私有属性保护数据

3. 代码组织
   - 相关的属性和方法组织在一起
   - 符合单一职责原则
   - 保持类的简单性

4. 文档和注释
   - 为类添加文档字符串
   - 为重要的方法添加注释
   - 使用类型注解提高可读性

## 下一步计划
- 学习类的继承和多态
- 了解特殊方法(魔术方法)
- 掌握面向对象的设计原则

### 特殊方法使用指南
1. 基本特殊方法
   - 总是定义 __init__
   - 实现 __str__ 提供用户友好的字符串表示
   - 实现 __repr__ 提供详细的调试信息

2. 比较操作
   - __eq__ 用于相等性比较
   - __lt__ 用于排序
   - 其他比较方法(__gt__, __le__, __ge__)会自动推导

3. 容器操作
   - __len__ 返回对象的长度
   - __getitem__ 支持索引或键访问
   - __setitem__ 支持索引或键赋值
   - __delitem__ 支持删除操作

4. 类型转换
   - __int__ 转换为整数
   - __float__ 转换为浮点数
   - __bool__ 转换为布尔值

### 类型注解使用
1. 基本语法
   - 参数注解:param: type
   - 返回值注解:-> type
   - 可选类型:Optional[type]

2. 常用类型
   - str: 字符串
   - int: 整数
   - float: 浮点数
   - bool: 布尔值
   - List[type]: 列表
   - Dict[key_type, value_type]: 字典
   - Optional[type]: 可选类型

3. 注解好处
   - 提高代码可读性
   - 增强IDE支持
   - 帮助捕获类型错误
   - 作为代码文档

## 下一步计划
- 学习面向对象的高级特性
- 了解元类和装饰器
- 掌握上下文管理器

## 注意事项
1. 特殊方法应该在确实需要时才实现
2. 保持特殊方法的行为符合Python惯例
3. 类型注解是可选的,不要过度使用
4. 在需要清晰表达意图时使用类型注解

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages