1. 本周学习收获
本周课堂主要复习了字符串、列表、字典三种数据类型的异同,并系统学习了函数的定义与调用、参数类型、变量作用域、文件打开操作等新知识。
1.1 容器类型复习:字符串、列表、字典
本周首先复习了三种容器类型的共同点与区别,这部分内容我已熟练掌握。
共同点:
- 都属于容器类型,能够存放多个数据;
- 都可以使用
len()获取长度; - 都可以用
for循环遍历; - 都可以用
in关键字判断元素是否存在。
不同点:
| 特性 | 字符串 | 列表 | 字典 |
|---|---|---|---|
| 符号 | 引号" " | 方括号[ ] | 大括号{ } |
| 存储内容 | 只能存字符 | 任意类型数据 | 键值对 |
| 可变性 | 不可变 | 可变 | 可变 |
| 取值方式 | 数字下标 | 数字下标 | 键 key |
| 切片 | 支持 | 支持 | 不支持 |
| 键重复 | — | — | 不允许 |
举例说明:
# 字符串:不可变,靠下标取值s="hello"print(s[0])# hprint(s[1:3])# el# 列表:可变,支持增删改lst=[1,2,3]lst.append(4)# 增加lst[0]=100# 修改print(lst)# [100, 2, 3, 4]# 字典:键值对,靠键取值d={"name":"小明","age":18}print(d["name"])# 小明1.2 函数的定义与调用
函数是封装特定功能的代码块,使用def关键字定义。这部分是本周新学内容,我已初步掌握基本用法。
defadd(a,b):# a、b 是形参"""两数相加"""returna+b result=add(3,5)# 3、5 是实参print(result)# 8函数包含四个部分:函数名、形参、函数体与return返回值。调用时传入实参,形参是定义时的占位参数,实参是调用时传递的真实数据,还可以添加文档注释。
1.3 参数类型
本周学习了三种参数类型,其中位置参数和默认值参数我已熟练掌握,关键字参数初步了解。
# 位置参数:按顺序匹配,数量必须一致defgreet(name,age):print(f"{name}今年{age}岁")greet("小红",20)# 默认值参数:写在位置参数之后,不传则用默认值defgreet2(name,age=18):print(f"{name}今年{age}岁")greet2("小刚")# 使用默认值 18# 关键字参数:形参名=值,不受顺序限制greet2(age=22,name="小丽")1.4 变量作用域:局部变量与全局变量
1.5 文件打开操作
本周还学习了文件的基本操作,这部分内容我已初步掌握。文件打开方式主要分为三种:只读、覆盖写和追加写。
三种打开方式:
| 模式 | 含义 | 说明 |
|---|---|---|
r | 只读 | 只能读取文件内容,不能修改,文件不存在会报错 |
w | 覆盖写 | 写入内容会覆盖原文件,文件不存在会新建 |
a | 追加写 | 在文件末尾追加内容,不覆盖原有内容,文件不存在会新建 |
举例说明:
# 只读模式:r,只能读取内容f=open("test.txt","r",encoding="utf-8")content=f.read()print(content)f.close()# 覆盖写模式:w,会清空原内容再写入f=open("test.txt","w",encoding="utf-8")f.write("这是覆盖写入的内容")f.close()# 追加写模式:a,在末尾追加,不覆盖原内容f=open("test.txt","a",encoding="utf-8")f.write("\n这是追加写入的内容")f.close()变量分为局部变量和全局变量,这部分概念我已理解,但实际运用还需多练习。
- 局部变量:在函数内部定义,仅在函数内生效,函数结束后销毁;
- 全局变量:定义在函数外部,整个程序都可访问;
- 同名时优先使用局部变量;
- 在函数内修改全局变量需用
global声明。
count=10# 全局变量defchange():globalcount# 声明使用全局变量count=20change()print(count)# 202. 遇到的难题与困惑
本周学习中,我遇到以下几个困惑点,如实记录如下:
局部变量与全局变量的作用域:当函数内出现与全局变量同名的变量时,到底什么时候是新建局部变量、什么时候是修改全局变量,我有时会判断错误,尤其是涉及
global关键字时容易混淆。默认值参数与位置参数的顺序:虽然知道默认值参数必须写在位置参数之后,但做题时偶尔会写反,导致报错。
3. 错题反思与总结
本周做题时主要出现以下几类错误,我分析了原因并总结了改正方法。
3.1 出错原因分析
(1)粗心大意
- 在写字典取值时,把
d["name"]写成了d[name],忘记给键加引号; - 调用函数时实参个数写错,多传或少传一个参数。
(2)知识点不熟练
- 混淆了列表和字典的取值方式,列表用下标、字典用键,做题时偶尔用错;
- 对
global关键字的使用场景判断不准,导致函数内修改全局变量失败。
(3)审题不清
- 题目要求用关键字参数调用函数,我却用了位置参数,导致顺序错误;
3.2 改正方法与技巧
针对以上问题,我总结出以下改正方法:
写字典取值时先检查键是否加引号:养成写完代码后回头检查的习惯,尤其是字符串键必须用引号包裹。
画表格对比记忆:把字符串、列表、字典的取值方式、可变性、是否支持切片整理成表格,贴在笔记本上,做题前先看一眼。
函数调用前先数参数个数:写函数调用语句前,先数清楚形参有几个,再对应写实参,避免数量不匹配。
多动手敲代码验证:遇到不确定的语法(如
global),直接在 Python 环境里运行验证,比死记硬背更有效。
3.3 本周总结
本周内容整体难度适中,容器类型复习部分掌握较好,函数基础部分基本掌握,文件打开操作初步了解,但作用域还需要加强练习。下周我计划针对薄弱点做专项练习,重点攻克全局变量的使用场景和文件读写操作。