Skip to content

Commit 9da5b5f

Browse files
committed
feat: 添加16-lambda模块和相关文档
新增Lambda表达式学习模块,包含基础语法、与普通函数对比、与内置函数结合使用等内容。同时更新了14-function-parameters和15-function-scope模块的文档和示例代码,完善了相关文档网站配置。 docs: 更新README和文档网站导航 style: 统一代码格式和命名规范
1 parent c7a4c9c commit 9da5b5f

59 files changed

Lines changed: 34714 additions & 61 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.trae/rules/project_rules.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
`[模块名称]`学习模块创建完整的学习代码和教学教案,包括多个可运行的Python文件,每个文件对应一个知识点。
23

34
具体要求:
@@ -7,6 +8,7 @@
78
- 文件命名格式:01_xxx.py, 02_xxx.py, ...
89
- 每个文件包含详细的代码示例、注释说明和可运行的代码
910
- 确保代码具有教学性和实用性
11+
- 每生成完一个Python文件,都要测试代码示例是可运行的,使用python3
1012

1113
2. **更新README.md文件**
1214
- 添加学习目标和主要内容概述
@@ -19,16 +21,17 @@
1921

2022
3. **生成对应的文档网站**
2123
- 在docs/guide/目录下创建对应的模块文档目录
22-
- 将README.md内容转换为index.md作为模块总说明文档,需要按照序号排列,01_xxx.md, 02_xxx.md, ...
23-
- 为每个Python文件创建对应的markdown文档页面,
24+
- 内容结构与01-variables-and-types目录保持一致
25+
- 将README.md内容转换为index.md作为模块总说明文档,除了index.md文件,其他文件需要按照序号排列,01_xxx.md, 02_xxx.md, ...
26+
- 为每个Python文件创建对应的markdown文档页面,文件命名格式:01_xxx.md, 02_xxx.md, ...
2427
- 每个文档页面包含:
2528
* 完整的Python代码,不同的示例代码放入单独的代码块
2629
* 详细的代码解释和说明
2730
* 学习要点和注意事项
28-
* 可运行的代码示例,使用python3
2931
- 更新VitePress配置,确保导航和侧边栏正确显示,文件也需要按照序号排列
3032

31-
请确保:
32-
- 内容结构与01-variables-and-types目录保持一致
33-
- 文档网站能够正常运行和展示
34-
- 所有代码确保可以正常执行
33+
4. **更新说明文件**
34+
- 更新根目录下的README.md文件,添加对该模块的介绍和学习路径,尤其是跳转链接,如果不对需要及时修改
35+
- 更新docs/guide/index.md文件,添加对该模块的介绍、学习路径、更新进度等,尤其是跳转链接,如果不对需要及时修改
36+
37+
5. 测试文档网站能够正常运行和展示
Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
位置参数 (Positional Parameters)
5+
6+
位置参数是函数中最基本的参数类型,参数的值根据位置顺序传递给函数。
7+
调用函数时,参数必须按照定义时的顺序传递。
8+
9+
学习目标:
10+
1. 理解位置参数的概念
11+
2. 掌握位置参数的定义和使用
12+
3. 了解位置参数的特点和限制
13+
4. 学会处理位置参数的常见问题
14+
"""
15+
16+
# 1. 基本的位置参数
17+
def greet(name, age):
18+
"""
19+
简单的问候函数
20+
21+
参数:
22+
name (str): 姓名
23+
age (int): 年龄
24+
"""
25+
print(f"你好,{name}!你今年{age}岁了。")
26+
27+
# 2. 多个位置参数
28+
def calculate_rectangle_area(length, width):
29+
"""
30+
计算矩形面积
31+
32+
参数:
33+
length (float): 长度
34+
width (float): 宽度
35+
36+
返回:
37+
float: 矩形面积
38+
"""
39+
area = length * width
40+
print(f"矩形面积:{length} × {width} = {area}")
41+
return area
42+
43+
# 3. 位置参数的顺序很重要
44+
def divide(dividend, divisor):
45+
"""
46+
除法运算
47+
48+
参数:
49+
dividend (float): 被除数
50+
divisor (float): 除数
51+
52+
返回:
53+
float: 商
54+
"""
55+
if divisor == 0:
56+
print("错误:除数不能为零!")
57+
return None
58+
59+
result = dividend / divisor
60+
print(f"{dividend} ÷ {divisor} = {result}")
61+
return result
62+
63+
# 4. 位置参数与数据类型
64+
def format_person_info(name, age, height, is_student):
65+
"""
66+
格式化个人信息
67+
68+
参数:
69+
name (str): 姓名
70+
age (int): 年龄
71+
height (float): 身高(米)
72+
is_student (bool): 是否为学生
73+
"""
74+
status = "学生" if is_student else "非学生"
75+
print(f"姓名:{name}")
76+
print(f"年龄:{age}岁")
77+
print(f"身高:{height}米")
78+
print(f"身份:{status}")
79+
print("-" * 20)
80+
81+
# 5. 位置参数的数量检查
82+
def add_three_numbers(a, b, c):
83+
"""
84+
三个数相加
85+
86+
参数:
87+
a (float): 第一个数
88+
b (float): 第二个数
89+
c (float): 第三个数
90+
91+
返回:
92+
float: 三数之和
93+
"""
94+
result = a + b + c
95+
print(f"{a} + {b} + {c} = {result}")
96+
return result
97+
98+
# 6. 位置参数与列表/元组
99+
def process_coordinates(x, y, z):
100+
"""
101+
处理三维坐标
102+
103+
参数:
104+
x (float): X坐标
105+
y (float): Y坐标
106+
z (float): Z坐标
107+
"""
108+
print(f"坐标点:({x}, {y}, {z})")
109+
distance = (x**2 + y**2 + z**2)**0.5
110+
print(f"到原点的距离:{distance:.2f}")
111+
return distance
112+
113+
# 7. 位置参数的实际应用示例
114+
def create_user_profile(username, email, phone, city):
115+
"""
116+
创建用户档案
117+
118+
参数:
119+
username (str): 用户名
120+
email (str): 邮箱
121+
phone (str): 电话
122+
city (str): 城市
123+
124+
返回:
125+
dict: 用户档案字典
126+
"""
127+
profile = {
128+
'username': username,
129+
'email': email,
130+
'phone': phone,
131+
'city': city
132+
}
133+
134+
print("用户档案创建成功:")
135+
for key, value in profile.items():
136+
print(f" {key}: {value}")
137+
138+
return profile
139+
140+
# 8. 位置参数的错误处理
141+
def safe_divide(a, b):
142+
"""
143+
安全的除法运算(带错误处理)
144+
145+
参数:
146+
a (float): 被除数
147+
b (float): 除数
148+
149+
返回:
150+
float or None: 运算结果或None(出错时)
151+
"""
152+
try:
153+
if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
154+
print("错误:参数必须是数字类型")
155+
return None
156+
157+
if b == 0:
158+
print("错误:除数不能为零")
159+
return None
160+
161+
result = a / b
162+
print(f"计算结果:{a} ÷ {b} = {result}")
163+
return result
164+
165+
except Exception as e:
166+
print(f"计算出错:{e}")
167+
return None
168+
169+
def main():
170+
"""
171+
主函数:演示位置参数的各种用法
172+
"""
173+
print("=" * 50)
174+
print("位置参数演示")
175+
print("=" * 50)
176+
177+
# 1. 基本位置参数使用
178+
print("\n1. 基本位置参数:")
179+
greet("小明", 25)
180+
greet("小红", 22)
181+
182+
# 2. 计算矩形面积
183+
print("\n2. 多个位置参数:")
184+
area1 = calculate_rectangle_area(5.0, 3.0)
185+
area2 = calculate_rectangle_area(10.5, 7.2)
186+
187+
# 3. 演示参数顺序的重要性
188+
print("\n3. 参数顺序的重要性:")
189+
print("正确顺序:")
190+
divide(10, 2)
191+
print("交换顺序:")
192+
divide(2, 10)
193+
194+
# 4. 不同数据类型的位置参数
195+
print("\n4. 不同数据类型的参数:")
196+
format_person_info("张三", 28, 1.75, True)
197+
format_person_info("李四", 35, 1.68, False)
198+
199+
# 5. 三个数相加
200+
print("\n5. 固定数量的参数:")
201+
sum_result = add_three_numbers(10, 20, 30)
202+
sum_result2 = add_three_numbers(1.5, 2.7, 3.8)
203+
204+
# 6. 处理坐标
205+
print("\n6. 处理三维坐标:")
206+
distance1 = process_coordinates(3, 4, 5)
207+
distance2 = process_coordinates(1.0, 2.0, 2.0)
208+
209+
# 7. 创建用户档案
210+
print("\n7. 实际应用示例:")
211+
user1 = create_user_profile("john_doe", "john@email.com", "13800138000", "北京")
212+
user2 = create_user_profile("jane_smith", "jane@email.com", "13900139000", "上海")
213+
214+
# 8. 错误处理演示
215+
print("\n8. 错误处理:")
216+
safe_divide(10, 2)
217+
safe_divide(10, 0) # 除零错误
218+
safe_divide("10", 2) # 类型错误
219+
220+
# 9. 常见错误演示
221+
print("\n9. 常见错误演示:")
222+
try:
223+
# 参数数量不匹配
224+
greet("小明") # 缺少参数
225+
except TypeError as e:
226+
print(f"参数数量错误:{e}")
227+
228+
try:
229+
# 参数过多
230+
greet("小明", 25, "额外参数") # 参数过多
231+
except TypeError as e:
232+
print(f"参数数量错误:{e}")
233+
234+
print("\n=" * 50)
235+
print("位置参数要点总结:")
236+
print("1. 位置参数必须按照定义时的顺序传递")
237+
print("2. 参数数量必须完全匹配")
238+
print("3. 参数的位置决定了它们的含义")
239+
print("4. 位置参数是最基本的参数传递方式")
240+
print("5. 调用时不能省略任何位置参数")
241+
print("=" * 50)
242+
243+
if __name__ == "__main__":
244+
main()

0 commit comments

Comments
 (0)