소스 검색

python 基础知识。

tanlie 6 일 전
부모
커밋
edf686873e
4개의 변경된 파일368개의 추가작업 그리고 2개의 파일을 삭제
  1. 12 1
      day03/functions_basics.py
  2. 117 0
      day04/class_basics.py
  3. 18 1
      note/Python3入门与进阶.md
  4. 221 0
      note/python_builtins_cheatsheet.md

+ 12 - 1
day03/functions_basics.py

@@ -2,6 +2,8 @@
 
 涵盖:普通函数、参数、返回值、默认参数、关键字参数、可变参数、
 匿名函数、递归函数、作用域和闭包基础等。
+类变量和实例变量的查找顺序
+
 """
 
 
@@ -60,10 +62,14 @@ def outer():
 
     return inner
 
+inner2 = outer()  # outer() 返回 inner 函数对象
+print("inner() ->", inner2())  # 调用 inner 函数
 
 # 匿名函数(lambda)
 square = lambda x: x * x
-
+# lambda 参数列表: 表达式
+# f = lambda x, y: x + y
+# f(2,3)  # 返回 5
 
 # 全局变量与局部变量
 count = 0
@@ -109,5 +115,10 @@ def main():
     print("do_math(8, square) ->", do_math(8, square))
 
 
+# 三元表达式
+x = 1
+y = 2
+result = x if x > y else y
+
 if __name__ == '__main__':
     main()

+ 117 - 0
day04/class_basics.py

@@ -0,0 +1,117 @@
+"""class_basics.py - Python 类基础示例
+
+涵盖:类定义、对象实例化、__init__、属性、方法、实例方法、类方法、静态方法、
+继承、封装和多态等基础知识。
+"""
+from abc import ABC, abstractmethod
+
+
+class Person:
+    """定义一个简单的类。"""
+
+    # 类属性
+    species = "Human"
+
+    def __init__(self, name: str, age: int):
+        """构造方法:初始化实例属性。"""
+        self.name = name
+        self.age = age
+
+    def speak(self)-> str:
+        """实例方法:访问实例属性。"""
+        return f"My name is {self.name}, I am {self.age} years old."
+
+    @classmethod
+    def from_birth_year(cls, name: str, birth_year: int)-> 'Person':
+        """类方法:根据出生年份计算年龄。"""
+        age = 2026 - birth_year
+        return cls(name, age)
+
+    @staticmethod
+    def is_adult(age: int)-> bool:
+        """静态方法:不访问实例或类状态。"""
+        return age >= 18
+
+
+# 继承示例
+class Student(Person):
+    def __init__(self, name: str, age: int, school: str):
+        super().__init__(name, age)
+        self.school = school
+
+    def study(self):
+        return f"{self.name} is studying at {self.school}."
+
+
+class  Animal(ABC):
+    @abstractmethod
+    def speak(self):
+       pass
+
+# 多态示例
+class Dog(Animal):
+    def speak(self):
+        return "Woof!"
+
+
+class Cat(Animal):
+    def speak(self):
+        return "Meow!"
+
+
+# 封装示例:使用单下划线表示受保护属性
+class BankAccount:
+    def __init__(self, balance):
+        self._balance = balance
+
+    def get_balance(self):
+        return self._balance
+
+    def deposit(self, amount):
+        if amount > 0:
+            self._balance += amount
+
+
+# 类属性访问
+print("Person.species ->", Person.species)
+
+# 实例化对象
+p1 = Person("Alice", 20)
+print("p1.speak() ->", p1.speak())
+
+# 类方法调用
+p2 = Person.from_birth_year("Bob", 2005)
+print("p2.speak() ->", p2.speak())
+
+# 静态方法调用
+print("Person.is_adult(21) ->", Person.is_adult(21))
+
+# 继承
+s1 = Student("Charlie", 19, "Harvard")
+print("s1.study() ->", s1.study())
+print("s1.speak() ->", s1.speak())
+
+# 多态
+animals = [Dog(), Cat()]
+for animal in animals:
+    print("animal.speak() ->", animal.speak())
+
+# 封装
+account = BankAccount(1000)
+print("account.get_balance() ->", account.get_balance())
+account.deposit(200)
+print("after deposit ->", account.get_balance())
+
+# 对象的属性访问
+print("p1.name ->", p1.name)
+
+# 使用 __dict__ 查看实例属性
+print("p1.__dict__ ->", p1.__dict__)
+
+# 说明:
+# - 类是对象的模板
+# - 实例是类创建出来的对象
+# - self 表示当前实例
+# - __init__ 是初始化方法
+# - 继承允许子类复用父类功能
+# - 多态允许不同对象用同一接口表现不同行为

+ 18 - 1
note/Python3入门与进阶.md

@@ -6,4 +6,21 @@
 - 第6章 分支、循环、条件与枚举
 - 第7章 包、模块、函数与变量作用域
 - 第8章 Python函数
-- 第9章 高级部分:面向对象
+- 第9章 高级部分:面向对象
+- 第10章 正则表达式与JSON
+- 第11章 Python的高级语法与用法
+- 第12章 函数式编程: 匿名函数、高阶函数、装饰器
+- 第13章 实战:原生爬虫
+
+```
+高阶函数
+map()、filter()、reduce()、sorted()、zip()、enumerate()
+
+```
+装饰器(Decorator)是 Python 中一种非常重要的高级特性,它本质上就是:
+一个“接收函数作为参数”的函数
+返回一个“增强版函数”
+它的核心作用是:
+不修改原函数代码
+但给它增加额外功能
+比如日志、权限验证、计时、缓存、异常处理等

+ 221 - 0
note/python_builtins_cheatsheet.md

@@ -0,0 +1,221 @@
+# Python 内置函数速查表
+
+## 1. 按字母顺序速查
+
+- abs(x):返回绝对值
+- all(iterable):如果所有元素都为真,返回 True
+- any(iterable):如果任一元素为真,返回 True
+- bool(x):将值转换为布尔值
+- bytearray([source[, encoding[, errors]]]):返回字节数组
+- bytes([source[, encoding[, errors]]]):返回字节串
+- callable(obj):判断对象是否可调用
+- chr(i):把 Unicode 码点转换成字符
+- dict([mapping]):创建字典
+- divmod(a, b):返回商和余数,结果为 (a // b, a % b)
+- enumerate(iterable, start=0):返回 (索引, 值) 迭代对
+- eval(expression):执行字符串表达式
+- exec(object):执行 Python 代码
+- filter(function, iterable):过滤序列
+- float(x):将值转换为浮点数
+- format(value, format_spec):格式化字符串
+- frozenset(iterable):返回冻结集合
+- getattr(obj, name[, default]):获取对象属性
+- globals():返回全局作用域中的变量
+- hasattr(obj, name):判断对象是否有某个属性
+- hash(obj):返回对象的哈希值
+- help([object]):查看帮助信息
+- hex(x):将整数转换成十六进制字符串
+- id(obj):返回对象的内存地址
+- input([prompt]):读取用户输入
+- int(x=0[, base=10]):将值转换为整数
+- isinstance(obj, classinfo):判断对象是否属于某个类型
+- issubclass(class, classinfo):判断类是否为某类的子类
+- iter(obj[, sentinel]):返回迭代器
+- len(s):返回对象长度
+- list([iterable]):创建列表
+- locals():返回当前局部作用域中的变量
+- map(function, iterable, ...):对每个元素执行函数
+- max(iterable[, key, default]):返回最大值
+- memoryview(obj):返回对象的内存视图
+- min(iterable[, key, default]):返回最小值
+- next(iterator[, default]):返回迭代器的下一个元素
+- object():返回一个新对象
+- oct(x):将整数转换成八进制字符串
+- open(file, mode='r', ...):打开文件
+- ord(c):返回字符对应的 Unicode 码点
+- pow(x, y[, z]):幂运算
+- print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False):输出内容
+- range(start, stop[, step]):生成整数序列
+- repr(obj):返回对象的“官方字符串表示”
+- reversed(seq):返回反向迭代器
+- round(number[, ndigits]):四舍五入
+- set([iterable]):创建集合
+- setattr(obj, name, value):设置对象属性
+- slice(stop) / slice(start, stop[, step]):创建切片对象
+- sorted(iterable[, key][, reverse]):返回排序后的新列表
+- str(obj=''):将对象转换为字符串
+- sum(iterable[, start=0]):求和
+- tuple([iterable]):创建元组
+- type(obj):返回对象类型
+- vars([object]):返回对象的 __dict__ 或当前作用域
+- zip(*iterables):并行打包多个可迭代对象
+
+## 2. 常用分类总结
+
+### 2.1 数据类型转换
+
+- int():整数
+- float():浮点数
+- str():字符串
+- bool():布尔值
+- list():列表
+- tuple():元组
+- set():集合
+- dict():字典
+- bytes():字节串
+- bytearray():字节数组
+
+### 2.2 数值运算
+
+- abs():绝对值
+- round():四舍五入
+- sum():求和
+- min():最小值
+- max():最大值
+- pow():幂运算
+- divmod():计算商和余数
+
+### 2.3 容器操作
+
+- len():长度
+- sorted():排序
+- reversed():反向
+- enumerate():索引+值
+- zip():打包
+- range():范围序列
+
+### 2.4 迭代和筛选
+
+- map():映射
+- filter():过滤
+- all():全真
+- any():任真
+- iter():获取迭代器
+- next():取下一个元素
+
+### 2.5 对象和类型判断
+
+- type():查看类型
+- isinstance():判断实例类型
+- issubclass():判断子类关系
+- callable():判断是否可调用
+- hash():哈希值
+- id():内存地址
+
+### 2.6 输入输出与文件
+
+- print():输出
+- input():输入
+- open():打开文件
+- eval():执行表达式
+- exec():执行代码
+
+### 2.7 调试和帮助
+
+- help():帮助文档
+- dir():查看对象属性和方法
+- repr():对象的字符串表示
+- vars():查看对象属性字典
+- globals() / locals():查看作用域变量
+
+## 3. 面试常考重点
+
+### 3.1 最常见的内置函数
+
+- len()
+- sum()
+- max()
+- min()
+- sorted()
+- range()
+- enumerate()
+- zip()
+- map()
+- filter()
+- isinstance()
+- type()
+- abs()
+- round()
+- input()
+- print()
+- open()
+
+### 3.2 高频用法
+
+```python
+# 1. 求和
+nums = [1, 2, 3, 4]
+print(sum(nums))  # 10
+
+# 2. 最大值、最小值
+print(max(nums))  # 4
+print(min(nums))  # 1
+
+# 3. 排序
+print(sorted(nums, reverse=True))  # [4, 3, 2, 1]
+
+# 4. 索引和元素一起遍历
+for i, value in enumerate(nums):
+    print(i, value)
+
+# 5. 同时遍历两个列表
+names = ["Tom", "Jerry"]
+ages = [18, 20]
+for name, age in zip(names, ages):
+    print(name, age)
+
+# 6. 类型判断
+print(isinstance(3, int))  # True
+
+# 7. 转换类型
+s = "123"
+print(int(s))  # 123
+print(list(s))  # ['1', '2', '3']
+
+# 8. 过滤
+nums = [1, 2, 3, 4, 5]
+print(list(filter(lambda x: x % 2 == 0, nums)))  # [2, 4]
+
+# 9. 映射
+print(list(map(lambda x: x * 2, nums)))  # [2, 4, 6, 8, 10]
+```
+
+## 4. 备注
+
+- Python 的内置函数非常多,但真正常用的一部分通常集中在:类型转换、容器处理、迭代、数值计算和调试。
+- 面试时,重点掌握“函数作用 + 常见用法 + 代码示例”比单纯背名称更重要。
+- 注意:`eval()` 和 `exec()` 这类函数要谨慎使用,可能带来安全风险。
+
+## 5. 一句话记忆法
+
+- 转换:int / float / str / list / tuple / set / dict
+- 判断:isinstance / hasattr / callable / all / any
+- 计算:sum / max / min / abs / round / pow / divmod
+- 迭代:range / enumerate / zip / map / filter
+- 调试:type / id / repr / dir / help
+
+## 6. 适合背诵的简版
+
+如果要快速记忆,可以优先背下面这些:
+
+- len()、type()、isinstance()、id()、repr()
+- abs()、round()、sum()、min()、max()
+- list()、tuple()、set()、dict()、str()
+- range()、enumerate()、zip()、map()、filter()
+- sorted()、reversed()、all()、any()
+- print()、input()、open()
+- help()、dir()
+
+## 7. 结尾
+
+掌握 Python 内置函数是学习 Python 的基础技能之一。建议在练习中多写代码,把这些函数用起来,而不是只背概念。