瀏覽代碼

面向对象之前。

tanlie 1 周之前
父節點
當前提交
e8d31bb7b0

+ 27 - 0
day01/example05.py

@@ -0,0 +1,27 @@
+"""
+example05 - 函数,
+author: tanlie
+date: 2026/8/22
+"""
+
+
+def test(x: int, y: int) -> int:
+    print("test()函数被调用了")
+    return x + y
+
+
+test(1, 2)
+
+
+# test("a", 1) # 这里会报错,因为字符串和整数不能相加
+
+
+def test2(x: int, y: int) -> tuple:
+    return x, y
+
+
+print(type(test(1, 2)))
+print(type(test2(1, 2)))
+
+a, b = test2(1, 2)
+print("a, b ->", a, b)

+ 113 - 0
day03/functions_basics.py

@@ -0,0 +1,113 @@
+"""functions_basics.py - Python 函数基础示例
+
+涵盖:普通函数、参数、返回值、默认参数、关键字参数、可变参数、
+匿名函数、递归函数、作用域和闭包基础等。
+"""
+
+
+def greet(name):
+    """普通函数:接收参数并返回字符串。"""
+    return f"Hello, {name}!"
+
+
+def add(a, b):
+    """普通函数:求和。"""
+    return a + b
+
+
+def power(base, exponent=2):
+    """默认参数:exponent 默认值为 2。"""
+    return base ** exponent
+
+
+def show_student(name, age, city="Beijing"):
+    """默认参数示例。"""
+    print(f"Name: {name}, Age: {age}, City: {city}")
+
+
+def print_info(name, *, age, city):
+    """keyword-only 参数:必须使用关键字传参。"""
+    print(f"{name}, {age}, {city}")
+
+
+def sum_all(*numbers):
+    """可变参数:接收任意数量的位置参数。"""
+    total = 0
+    for n in numbers:
+        total += n
+    return total
+
+
+def print_scores(**scores):
+    """关键字可变参数:接收任意数量关键字参数。"""
+    for key, value in scores.items():
+        print(f"{key} = {value}")
+
+
+def factorial(n):
+    """递归函数:阶乘。"""
+    if n == 1 or n == 0:
+        return 1
+    return n * factorial(n - 1)
+
+
+def outer():
+    """闭包示例:内部函数访问外部变量。"""
+    x = 10
+
+    def inner():
+        return x + 5
+
+    return inner
+
+
+# 匿名函数(lambda)
+square = lambda x: x * x
+
+
+# 全局变量与局部变量
+count = 0
+
+
+def increase():
+    global count
+    count += 1
+    return count
+
+
+# 默认参数注意事项:不要使用可变对象作为默认值
+# 例如:def append_item(items=[]): ...
+
+
+def main():
+    print("greet('Tom') ->", greet("Tom"))
+    print("add(3, 5) ->", add(3, 5))
+    print("power(3) ->", power(3))
+    print("power(3, 3) ->", power(3, 3))
+
+    show_student("Alice", 18)
+    show_student("Bob", 20, "Shanghai")
+
+    print_info("Tom", age=25, city="Hangzhou")
+
+    print("sum_all(1, 2, 3, 4) ->", sum_all(1, 2, 3, 4))
+    print_scores(math=90, english=88, history=94)
+
+    print("factorial(5) ->", factorial(5))
+
+    closure = outer()
+    print("closure() ->", closure())
+
+    print("square(6) ->", square(6))
+    print("increase() ->", increase())
+    print("increase() ->", increase())
+
+    # 函数作为参数传递
+    def do_math(x, func):
+        return func(x)
+
+    print("do_math(8, square) ->", do_math(8, square))
+
+
+if __name__ == '__main__':
+    main()

+ 111 - 0
day03/variables_operators_basics.py

@@ -0,0 +1,111 @@
+"""variables_operators_basics.py - Python 变量与运算符基础示例
+
+涵盖:变量定义、命名规则、赋值、类型推断、常见算术运算符、比较运算符、
+逻辑运算符、赋值运算符、成员运算符、身份运算符,以及运算优先级说明。
+"""
+
+
+def main():
+    # 1. 变量:用来存储数据的标识符
+    name = "Alice"
+    age = 18
+    height = 1.72
+    is_student = True
+
+    print("name ->", name)
+    print("age ->", age)
+    print("height ->", height)
+    print("is_student ->", is_student)
+
+    # 2. 变量命名规则
+    # - 只能包含字母、数字、下划线
+    # - 不能以数字开头
+    # - 不能使用 Python 关键字
+    # - 建议使用 snake_case
+    user_name = "Bob"
+    max_score = 100
+    print("user_name ->", user_name)
+    print("max_score ->", max_score)
+
+    # 3. 多变量赋值
+    a, b, c = 10, 20, 30
+    print("a, b, c ->", a, b, c)
+
+    x = y = 100
+    print("x == y ->", x == y)
+
+    # 4. 动态类型:变量不需要声明类型,赋值时自动决定类型
+    num = 10
+    num = "ten"
+    print("num after reassignment ->", num)
+
+    # 5. 算术运算符
+    print("5 + 3 ->", 5 + 3)
+    print("5 - 3 ->", 5 - 3)
+    print("5 * 3 ->", 5 * 3)
+    print("10 / 3 ->", 10 / 3)      # 浮点除法
+    print("10 // 3 ->", 10 // 3)    # 整除
+    print("10 % 3 ->", 10 % 3)      # 取余
+    print("2 ** 3 ->", 2 ** 3)      # 幂运算
+
+    # 6. 比较运算符
+    print("5 > 3 ->", 5 > 3)
+    print("5 == 3 ->", 5 == 3)
+    print("5 != 3 ->", 5 != 3)
+    print("5 >= 3 ->", 5 >= 3)
+    print("5 <= 3 ->", 5 <= 3)
+
+    # 7. 逻辑运算符
+    print("True and False ->", True and False)
+    print("True or False ->", True or False)
+    print("not True ->", not True)
+
+    # 8. 赋值运算符
+    total = 10
+    total += 5    # total = total + 5
+    total *= 2    # total = total * 2
+    print("total ->", total)
+
+    # 9. 身份运算符:判断两个对象是否为同一个对象
+    p = [1, 2]
+    q = p
+    r = [1, 2]
+    print("p is q ->", p is q)
+    print("p is r ->", p is r)
+
+    # 10. 成员运算符:判断元素是否在序列里
+    fruits = ["apple", "banana", "orange"]
+    print("'apple' in fruits ->", 'apple' in fruits)
+    print("'pear' not in fruits ->", 'pear' not in fruits)
+
+    # 11. 位运算符(进阶,了解即可)
+    print("5 & 3 ->", 5 & 3)
+    print("5 | 3 ->", 5 | 3)
+    print("5 ^ 3 ->", 5 ^ 3)
+    print("~5 ->", ~5)
+
+    # 12. 运算优先级(从高到低)
+    # 一般顺序:括号 > 幂运算 > 乘除取模 > 加减 > 比较 > not > and > or
+    result = 10 + 3 * 2 ** 2
+    print("10 + 3 * 2 ** 2 ->", result)
+
+    # 13. 变量的作用
+    # - 存储数据
+    # - 程序中用于表达、计算、判断
+    # - 让代码更清晰、可维护
+
+    # 14. 小结
+    # Python 中变量没有固定类型,运算符用于进行计算、比较、逻辑判断和赋值。
+    # 根据需要选择合适的运算符即可。
+
+
+# if __name__ == '__main__':
+#     main()
+
+
+p = [1, 2]
+q = p
+r = [1, 2]
+print("p is q ->", p is q)
+print("p is r ->", p is r)
+print("p == r ->", p == r)

+ 9 - 0
note/Python3入门与进阶.md

@@ -0,0 +1,9 @@
+- 第1章 Python入门导学
+- 第2章 Python环境安装
+- 第3章 理解什么是写代码与Python的基本类型
+- 第4章 Python中表示“组”的概念与定义
+- 第5章 变量与运算符
+- 第6章 分支、循环、条件与枚举
+- 第7章 包、模块、函数与变量作用域
+- 第8章 Python函数
+- 第9章 高级部分:面向对象

二進制
note/images/img_1.png


+ 323 - 0
note/python_functions_basics.md

@@ -0,0 +1,323 @@
+# Python 函数基础知识
+
+## 1. 什么是函数
+
+函数就是一段可重复使用的代码,用来封装特定逻辑。
+
+```python
+def greet(name):
+    return f"Hello, {name}!"
+```
+
+特点:
+- 可复用
+- 便于维护
+- 让代码更清晰
+
+## 2. 命名函数
+
+最常见的函数是命名函数。
+
+```python
+def add(a, b):
+    return a + b
+```
+
+调用方式:
+
+```python
+result = add(3, 5)
+print(result)   # 8
+```
+
+## 3. 参数
+
+函数可以接收参数。
+
+```python
+def greet(name):
+    print(f"Hello, {name}")
+```
+
+调用:
+
+```python
+greet("Tom")
+```
+
+## 4. 返回值
+
+函数可以返回结果。
+
+```python
+def add(a, b):
+    return a + b
+```
+
+返回值可以赋给变量:
+
+```python
+result = add(2, 3)
+print(result)   # 5
+```
+
+如果函数中没有 `return`,默认返回 `None`。
+
+## 5. 默认参数
+
+函数参数可以带默认值。
+
+```python
+def power(base, exponent=2):
+    return base ** exponent
+
+print(power(3))      # 9
+print(power(3, 3))   # 27
+```
+
+## 6. 关键字参数
+
+可以按参数名传值。
+
+```python
+def show_student(name, age, city="Beijing"):
+    print(name, age, city)
+
+show_student("Alice", 18)
+show_student(name="Bob", age=20, city="Shanghai")
+```
+
+## 7. 位置参数和关键字参数
+
+### 位置参数
+
+```python
+def add(a, b):
+    return a + b
+
+print(add(3, 5))
+```
+
+### 关键字参数
+
+```python
+def add(a, b):
+    return a + b
+
+print(add(a=3, b=5))
+```
+
+## 8. 可变参数 `*args`
+
+`*args` 表示接收任意数量的位置参数。
+
+```python
+def sum_all(*numbers):
+    total = 0
+    for n in numbers:
+        total += n
+    return total
+
+print(sum_all(1, 2, 3, 4))  # 10
+```
+
+## 9. 关键字可变参数 `**kwargs`
+
+`**kwargs` 表示接收任意数量的关键字参数。
+
+```python
+def print_scores(**scores):
+    for key, value in scores.items():
+        print(f"{key} = {value}")
+
+print_scores(math=90, english=88)
+```
+
+## 10. 返回多个值
+
+函数可以一次返回多个值,实际上返回的是一个元组。
+
+```python
+def get_info():
+    return "Tom", 18
+
+name, age = get_info()
+print(name, age)
+```
+
+## 11. 匿名函数 lambda
+
+`lambda` 用于定义简单函数。
+
+```python
+square = lambda x: x * x
+print(square(6))  # 36
+```
+
+适合:
+- 简单计算
+- 回调函数
+- 一次性逻辑
+
+## 12. 递归函数
+
+递归函数是自己调用自己的函数。
+
+```python
+def factorial(n):
+    if n == 1 or n == 0:
+        return 1
+    return n * factorial(n - 1)
+
+print(factorial(5))  # 120
+```
+
+注意:
+- 递归必须有终止条件
+- 否则会造成无限递归
+
+## 13. 作用域
+
+### 全局变量
+
+```python
+count = 0
+
+def increase():
+    global count
+    count += 1
+    return count
+```
+
+### 局部变量
+
+```python
+def test():
+    x = 5
+    print(x)
+```
+
+局部变量只在函数内有效。
+
+## 14. 闭包
+
+闭包是指:函数内部定义了函数,并返回这个内部函数。
+
+```python
+def outer():
+    x = 10
+
+    def inner():
+        return x + 5
+
+    return inner
+
+c = outer()
+print(c())  # 15
+```
+
+## 15. 函数与方法的区别
+
+### 函数
+
+```python
+def greet(name):
+    print(f"Hello, {name}")
+```
+
+### 方法
+
+```python
+class Person:
+    def greet(self, name):
+        print(f"Hello, {name}")
+```
+
+区别:
+- 函数独立存在
+- 方法属于类或对象
+- 调用方式不同
+
+## 16. 函数嵌套
+
+函数可以定义在另一个函数内部。
+
+```python
+def outer():
+    def inner():
+        print("inner")
+    inner()
+
+outer()
+```
+
+## 17. nonlocal
+
+如果要修改外层函数中的变量,需要使用 `nonlocal`。
+
+```python
+def outer():
+    x = 10
+
+    def inner():
+        nonlocal x
+        x += 1
+        print(x)
+
+    inner()
+
+outer()
+```
+
+## 18. 文档字符串 docstring
+
+函数可以写说明文档。
+
+```python
+def add(a, b):
+    """返回 a 和 b 的和"""
+    return a + b
+```
+
+查看:
+
+```python
+print(add.__doc__)
+```
+
+## 19. 函数作为参数
+
+函数也可以作为参数传递给其他函数。
+
+```python
+def operate(x, func):
+    return func(x)
+
+print(operate(5, lambda x: x * 2))  # 10
+```
+
+## 20. 常见函数分类
+
+- 命名函数
+- 默认参数函数
+- 可变参数函数
+- 关键字参数函数
+- 匿名函数(lambda)
+- 递归函数
+- 生成器函数
+- 闭包函数
+
+## 21. 一句话总结
+
+函数就是把一段代码封装成一个可重复调用的模块,能够提高代码复用性、可维护性和清晰度。
+
+Python 中函数最核心的知识包括:
+- 参数
+- 返回值
+- 默认参数
+- 可变参数
+- 递归
+- 作用域
+- 闭包
+
+掌握这些后,后续学习类、装饰器、生成器都会更容易。

+ 305 - 0
note/python_naming_conventions.md

@@ -0,0 +1,305 @@
+# Python 包、模块、类、函数、变量命名规范
+
+本文档总结 Python 中常见命名规则,便于编写清晰、可维护、符合 PEP 8 的代码。
+
+## 1. 总体原则
+
+- 命名要清晰、准确、可读
+- 优先使用英文单词或英文短语
+- 避免使用模糊、不规范的名称
+- 保持命名风格统一
+- 不要与 Python 内置名称冲突
+
+## 2. 包(Package)命名规范
+
+### 规则
+
+- 全部使用小写字母
+- 尽量使用简短、表达清晰的词
+- 多个单词建议使用下划线连接
+- 避免使用大写字母或中文
+
+### 推荐示例
+
+```python
+package_name
+user_service
+data_utils
+```
+
+### 不推荐示例
+
+```python
+UserService
+userService
+DATA_UTILS
+```
+
+### 适用场景
+
+- 目录名
+- 项目中逻辑模块的分组名
+
+## 3. 模块(Module)命名规范
+
+### 规则
+
+- 全部使用小写字母
+- 多个单词用下划线分隔
+- 文件名应体现功能或职责
+- 以 `.py` 结尾
+
+### 推荐示例
+
+```python
+user_service.py
+math_utils.py
+config_loader.py
+```
+
+### 不推荐示例
+
+```python
+UserService.py
+userservice.py
+mathutils.py
+```
+
+### 说明
+
+模块名应尽量体现内容,例如:
+- `user_service.py`:用户相关服务
+- `file_utils.py`:文件处理工具
+- `config_loader.py`:配置加载器
+
+## 4. 类(Class)命名规范
+
+### 规则
+
+- 使用 PascalCase(大驼峰命名法)
+- 每个单词首字母大写
+- 类名通常是名词或名词短语
+
+### 推荐示例
+
+```python
+class UserProfile:
+    pass
+
+class HttpClient:
+    pass
+
+class DataProcessor:
+    pass
+```
+
+### 不推荐示例
+
+```python
+class userProfile:
+    pass
+
+class http_client:
+    pass
+```
+
+### 说明
+
+类一般用于表示实体、对象或能力集合,例如:
+- `UserProfile`
+- `OrderService`
+- `FileManager`
+
+## 5. 函数(Function)命名规范
+
+### 规则
+
+- 使用 snake_case(蛇形命名法)
+- 通常是动词或动词短语
+- 函数名应该清楚说明作用
+
+### 推荐示例
+
+```python
+def get_user_name():
+    pass
+
+def calculate_total():
+    pass
+
+def save_to_file():
+    pass
+```
+
+### 不推荐示例
+
+```python
+def GetUserName():
+    pass
+
+def total():
+    pass
+```
+
+### 说明
+
+函数名通常以“动作”开头,例如:
+- `read_file()`
+- `send_email()`
+- `validate_password()`
+
+## 6. 变量 / 标量(Variable / Scalar)命名规范
+
+### 规则
+
+- 使用 snake_case
+- 变量名要表达含义,尽量避免单字母(除循环变量外)
+- 常量使用大写字母 + 下划线
+- 布尔变量前缀常用 `is_`、`has_`、`can_`
+
+### 推荐示例
+
+```python
+user_name = "Tom"
+age = 18
+total_price = 99.9
+is_active = True
+has_permission = False
+```
+
+### 不推荐示例
+
+```python
+x = "Tom"
+n = 18
+a = True
+```
+
+### 说明
+
+变量名应该尽量说明数据是什么,例如:
+- `user_name`
+- `max_score`
+- `retry_count`
+- `is_valid`
+
+## 7. 常量(Constant)命名规范
+
+### 规则
+
+- 全部大写
+- 单词之间用下划线连接
+- 常量通常在模块级别声明
+
+### 推荐示例
+
+```python
+MAX_RETRY = 5
+DEFAULT_TIMEOUT = 30
+PI = 3.1415926
+```
+
+### 不推荐示例
+
+```python
+MaxRetry = 5
+defaultTimeout = 30
+```
+
+## 8. 私有命名规范
+
+### 规则
+
+- 私有变量或函数前加单下划线:`_name`
+- 更强私有时使用双下划线:`__secret`
+- 但不要过度使用双下划线,除非确实需要名称改写
+
+### 示例
+
+```python
+_secret_key = "abc"
+
+class Demo:
+    def __private_method(self):
+        pass
+
+    def public_method(self):
+        self.__private_method()
+```
+
+## 9. 避免命名冲突
+
+不要使用 Python 内置名称,例如:
+
+```python
+list
+str
+sum
+dict
+set
+int
+```
+
+如果必须使用,建议加上更明确的前后缀,比如:
+
+```python
+list_data
+user_dict
+```
+
+## 10. 命名风格一览
+
+| 类型 | 命名方式 | 示例 |
+| --- | --- | --- |
+| 包 | lower_case | `data_utils` |
+| 模块 | snake_case | `file_handler.py` |
+| 类 | PascalCase | `UserManager` |
+| 函数 | snake_case | `calculate_total()` |
+| 变量 | snake_case | `student_name` |
+| 常量 | UPPER_SNAKE_CASE | `MAX_RETRY` |
+
+## 11. 推荐命名模板
+
+```python
+# 包
+package_name
+
+# 模块
+module_name.py
+
+# 类
+class UserAccount:
+    pass
+
+# 函数
+def create_user_account():
+    pass
+
+# 变量
+user_name = "Alice"
+account_balance = 1000
+
+# 常量
+MAX_LOGIN_ATTEMPTS = 5
+```
+
+## 12. 最佳实践
+
+- 名称要表意,不要使用无意义缩写
+- 优先使用准确、清晰、标准的英文单词
+- 统一命名风格,避免混用 camelCase、PascalCase 和 snake_case
+- 变量名尽量描述“是什么”,函数名尽量描述“做什么”
+- 常量统一使用大写字母加下划线
+
+## 13. 一句话总结
+
+Python 命名规范的核心是:
+
+- 包:小写,简洁清晰
+- 模块:小写下划线,功能导向
+- 类:PascalCase,名词化
+- 函数:snake_case,动词化
+- 变量/标量:snake_case,表达含义
+- 常量:UPPER_SNAKE_CASE
+
+遵循这些规则后,代码会更容易阅读、维护和协作。

+ 0 - 0
note/列表的基本操作