当前位置: 首页 > news >正文

【python】速通笔记

Python学习路径 - 从零基础到入门

环境搭建

  1. 安装Python

    • Windows: 从官网下载安装包 https://www.python.org/downloads/
    • Mac/Linux: 通常已预装,可通过终端输入python3 --version检查
  2. 配置开发环境

    • 推荐使用VS Code或PyCharm作为代码编辑器
    • 安装Python扩展插件
    • 创建第一个Python文件hello.py
      # hello.py
      print("Hello, Python!")
      
    • 运行程序: 在终端输入python3 hello.py

基础语法

  1. 变量与数据类型

    • 数字类型
      # 整数
      age = 20
      # 浮点数
      price = 3.99
      
    • 字符串
      name = "Alice"
      greeting = 'Hello, World!'
      
    • 布尔值
      is_student = True
      is_teacher = False
      
  2. 基本运算

    # 算术运算
    print(10 + 3)  # 13
    print(10 - 3)  # 7
    print(10 * 3)  # 30
    print(10 / 3)  # 3.333...# 字符串拼接
    first_name = "John"
    last_name = "Doe"
    full_name = first_name + " " + last_name
    print(full_name)  # John Doe
    
  3. 练习题目

    • 练习1: 计算两个数的和
      num1 = 5
      num2 = 7
      # 计算并打印它们的和
      
    • 练习2: 打印个人信息
      name = "你的名字"
      age = 你的年龄
      # 打印"我叫XX,今年XX岁"
      

基础语法

  1. 变量与数据类型

    • 数字、字符串、布尔值
      # 示例
      num = 42
      name = "Python"
      is_true = True
      
    • 列表、元组、字典、集合
      # 示例
      my_list = [1, 2, 3]
      my_tuple = (1, 2, 3)
      my_dict = {"name": "Alice", "age": 25}
      my_set = {1, 2, 3}
      
  2. 运算符

    • 算术运算符
      # 示例
      print(10 + 3)  # 13
      print(10 - 3)  # 7
      print(10 * 3)  # 30
      print(10 / 3)  # 3.333...
      print(10 // 3) # 3 (整除)
      print(10 % 3)  # 1 (取余)
      print(10 ** 3) # 1000 (幂)
      
    • 比较运算符
      # 示例
      print(10 > 3)  # True
      print(10 < 3)  # False
      print(10 == 3) # False
      print(10 != 3) # True
      
    • 逻辑运算符
      # 示例
      print(True and False)  # False
      print(True or False)   # True
      print(not True)        # False
      
  3. 控制结构

    • 条件语句(if/elif/else)
      # 示例
      age = 18
      if age < 13:print("儿童")
      elif age < 18:print("青少年")
      else:print("成人")
      
    • 循环(for/while)
      # for循环示例
      for i in range(5):print(i)# while循环示例
      count = 0
      while count < 5:print(count)count += 1
      
    • break和continue
      # 示例
      for i in range(10):if i == 5:break  # 退出循环if i % 2 == 0:continue  # 跳过本次循环print(i)
      

函数编程

  1. 函数定义与调用
    # 示例
    def greet(name):"""打印问候语"""print(f"Hello, {name}!")greet("Alice")  # 调用函数
    
  2. 参数传递
    • 位置参数
      # 示例
      def add(a, b):return a + bprint(add(3, 5))  # 8
      
    • 关键字参数
      # 示例
      def greet(name, message):print(f"{message}, {name}!")greet(message="Hi", name="Bob")  # Hi, Bob!
      
    • 默认参数
      # 示例
      def greet(name, message="Hello"):print(f"{message}, {name}!")greet("Alice")  # Hello, Alice!
      greet("Bob", "Hi")  # Hi, Bob!
      
    • 可变参数(*args, **kwargs)
      # 示例
      def print_args(*args):for arg in args:print(arg)print_args(1, 2, 3)  # 打印1, 2, 3def print_kwargs(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_kwargs(name="Alice", age=25)  # 打印name: Alice, age: 25
      
  3. lambda表达式
    # 示例
    square = lambda x: x ** 2
    print(square(5))  # 25# 与map/filter一起使用
    numbers = [1, 2, 3, 4]
    squared = list(map(lambda x: x**2, numbers))
    print(squared)  # [1, 4, 9, 16]
    
  4. 作用域与闭包
    # 作用域示例
    x = 10  # 全局变量def foo():y = 20  # 局部变量print(x + y)  # 可以访问全局变量foo()  # 30# 闭包示例
    def outer_func(x):def inner_func(y):return x + yreturn inner_funcclosure = outer_func(10)
    print(closure(5))  # 15
    

面向对象编程

  1. 类与对象
    # 示例
    class Dog:# 类属性species = "Canis familiaris"# 初始化方法def __init__(self, name, age):self.name = name  # 实例属性self.age = age# 实例方法def description(self):return f"{self.name} is {self.age} years old"# 实例方法def speak(self, sound):return f"{self.name} says {sound}"# 创建对象
    my_dog = Dog("Buddy", 5)
    print(my_dog.description())  # Buddy is 5 years old
    print(my_dog.speak("Woof"))  # Buddy says Woof
    
  2. 继承与多态
    # 继承示例
    class Bulldog(Dog):def speak(self, sound="Woof"):return super().speak(sound)# 多态示例
    def animal_speak(animal):print(animal.speak())bulldog = Bulldog("Max", 3)
    print(bulldog.speak())  # Max says Woof
    
  3. 魔术方法
    # __str__ 示例
    class Dog:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"Dog(name='{self.name}', age={self.age})"my_dog = Dog("Buddy", 5)
    print(my_dog)  # Dog(name='Buddy', age=5)# __add__ 示例
    class Vector:def __init__(self, x, y):self.x = xself.y = ydef __add__(self, other):return Vector(self.x + other.x, self.y + other.y)v1 = Vector(1, 2)
    v2 = Vector(3, 4)
    v3 = v1 + v2
    print(v3.x, v3.y)  # 4 6
    
  4. 装饰器
    # 函数装饰器示例
    def my_decorator(func):def wrapper():print("装饰器: 调用函数前")func()print("装饰器: 调用函数后")return wrapper@my_decorator
    def say_hello():print("Hello!")say_hello()
    # 输出:
    # 装饰器: 调用函数前
    # Hello!
    # 装饰器: 调用函数后# 类装饰器示例
    def class_decorator(cls):class Wrapper:def __init__(self, *args, **kwargs):self.wrapped = cls(*args, **kwargs)def __getattr__(self, name):return getattr(self.wrapped, name)return Wrapper@class_decorator
    class MyClass:def __init__(self, value):self.value = valuedef show(self):print(f"Value: {self.value}")obj = MyClass(42)
    obj.show()  # Value: 42
    

高级特性

  1. 生成器与迭代器

    # 生成器示例
    def count_up_to(max):count = 1while count <= max:yield countcount += 1counter = count_up_to(5)
    print(next(counter))  # 1
    print(next(counter))  # 2# 迭代器示例
    my_list = [1, 2, 3]
    my_iter = iter(my_list)
    print(next(my_iter))  # 1
    print(next(my_iter))  # 2
    
  2. 装饰器高级用法

    # 带参数的装饰器
    def repeat(num_times):def decorator_repeat(func):def wrapper(*args, **kwargs):for _ in range(num_times):result = func(*args, **kwargs)return resultreturn wrapperreturn decorator_repeat@repeat(num_times=3)
    def greet(name):print(f"Hello {name}")greet("Alice")# 类装饰器
    class Timer:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):import timestart = time.time()result = self.func(*args, **kwargs)end = time.time()print(f"执行时间: {end - start:.2f}秒")return result@Timer
    def long_running_func():time.sleep(2)long_running_func()
    
  3. 元类编程

    # 元类示例
    class Meta(type):def __new__(cls, name, bases, namespace):namespace['version'] = '1.0'return super().__new__(cls, name, bases, namespace)class MyClass(metaclass=Meta):passprint(MyClass.version)  # 1.0# 动态创建类
    def make_class(name):return type(name, (), {'x': 10})DynamicClass = make_class('DynamicClass')
    print(DynamicClass().x)  # 10
    
  4. 上下文管理器

    # with语句示例
    with open('file.txt', 'w') as f:f.write('Hello, world!')# 自定义上下文管理器
    class MyContextManager:def __enter__(self):print("进入上下文")return selfdef __exit__(self, exc_type, exc_val, exc_tb):print("退出上下文")with MyContextManager() as cm:print("在上下文中")
    
  5. 多线程与多进程

    # 多线程示例
    import threadingdef worker():print("线程执行")threads = []
    for i in range(5):t = threading.Thread(target=worker)threads.append(t)t.start()for t in threads:t.join()# 多进程示例
    from multiprocessing import Processdef worker():print("进程执行")processes = []
    for i in range(5):p = Process(target=worker)processes.append(p)p.start()for p in processes:p.join()
    
  6. 异步编程(asyncio)

    import asyncioasync def hello():print("Hello")await asyncio.sleep(1)print("World")async def main():await asyncio.gather(hello(), hello(), hello())asyncio.run(main())
    

常用标准库

  1. os/sys - 系统操作

    # os示例
    import os
    print(os.getcwd())  # 获取当前工作目录
    os.mkdir('new_dir')  # 创建目录# sys示例
    import sys
    print(sys.argv)  # 命令行参数
    sys.exit(0)  # 退出程序
    
  2. pathlib - 现代化路径操作

    from pathlib import Path# 创建路径对象
    p = Path('.')# 遍历目录
    for f in p.glob('*.py'):print(f.name)# 路径拼接
    new_file = p / 'subdir' / 'new_file.txt'
    new_file.write_text('Hello, Pathlib!')
    
  3. subprocess - 运行外部命令

    import subprocess# 运行简单命令
    result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
    print(result.stdout)# 管道操作
    ps = subprocess.Popen(['ps', '-aux'], stdout=subprocess.PIPE)
    grep = subprocess.Popen(['grep', 'python'], stdin=ps.stdout, stdout=subprocess.PIPE)
    ps.stdout.close()
    output = grep.communicate()[0]
    print(output.decode())
    
  4. re - 正则表达式

    import re# 匹配示例
    pattern = r'\b\w+\b'
    text = 'Hello, world!'
    matches = re.findall(pattern, text)
    print(matches)  # ['Hello', 'world']# 替换示例
    new_text = re.sub(r'world', 'Python', text)
    print(new_text)  # Hello, Python!
    
  5. datetime - 日期时间

    from datetime import datetime, timedelta# 当前时间
    now = datetime.now()
    print(now.strftime('%Y-%m-%d %H:%M:%S'))  # 格式化输出# 时间计算
    tomorrow = now + timedelta(days=1)
    print(tomorrow)
    
  6. json - JSON处理

    import json# 序列化
    data = {'name': 'Alice', 'age': 25}
    json_str = json.dumps(data)
    print(json_str)  # {"name": "Alice", "age": 25}# 反序列化
    loaded_data = json.loads(json_str)
    print(loaded_data['name'])  # Alice
    
  7. collections - 高级数据结构

    from collections import defaultdict, Counter, namedtuple# defaultdict示例
    d = defaultdict(int)
    d['a'] += 1
    print(d['a'])  # 1# Counter示例
    cnt = Counter('abracadabra')
    print(cnt.most_common(3))  # [('a', 5), ('b', 2), ('r', 2)]# namedtuple示例
    Point = namedtuple('Point', ['x', 'y'])
    p = Point(11, y=22)
    print(p.x + p.y)  # 33
    

学习资源

  1. 官方文档: https://docs.python.org/3/
  2. 推荐书籍:
    • 《Python编程:从入门到实践》- 适合初学者
    • 《流畅的Python》- 适合进阶学习
    • 《Python Cookbook》- 实用技巧
  3. 练习平台:
    • LeetCode: 算法练习
    • Codewars: 编程挑战
    • HackerRank: 综合练习
  4. 在线课程:
    • Coursera: Python专项课程
    • Udemy: 实用Python项目
  5. 社区资源:
    • Stack Overflow: 问题解答
    • GitHub: 开源项目学习
    • Python官方论坛

进阶主题

  1. 并发编程

    # 线程池示例
    from concurrent.futures import ThreadPoolExecutordef task(n):return n * nwith ThreadPoolExecutor(max_workers=4) as executor:results = executor.map(task, range(10))print(list(results))
    
  2. 性能优化

    # 使用timeit测量代码执行时间
    import timeitsetup = """
    def sum_range(n):return sum(range(n))
    """print(timeit.timeit('sum_range(1000)', setup=setup, number=1000))
    
  3. 设计模式

    # 单例模式实现
    class Singleton:_instance = Nonedef __new__(cls):if cls._instance is None:cls._instance = super().__new__(cls)return cls._instances1 = Singleton()
    s2 = Singleton()
    print(s1 is s2)  # True
    

实战项目

1. 电商数据分析系统

需求分析:

  • 从CSV文件读取销售数据
  • 计算每日/每月销售额
  • 生成可视化报表

实现步骤:

import pandas as pd
import matplotlib.pyplot as pltdef sales_analysis():# 1. 读取数据df = pd.read_csv('sales.csv')# 2. 数据处理df['date'] = pd.to_datetime(df['date'])daily_sales = df.groupby(df['date'].dt.date)['amount'].sum()# 3. 可视化plt.figure(figsize=(10,6))daily_sales.plot(kind='bar')plt.title('每日销售额')plt.savefig('daily_sales.png')

调试技巧:

  • 使用df.head()检查数据读取是否正确
  • 打印中间结果验证数据处理逻辑

2. 天气查询应用

需求分析:

  • 调用天气API获取实时数据
  • 支持多城市查询
  • 缓存历史查询记录

实现步骤:

import requests
import jsonclass WeatherApp:def __init__(self, api_key):self.api_key = api_keyself.history = {}def get_weather(self, city):url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={self.api_key}"response = requests.get(url)data = json.loads(response.text)self.history[city] = datareturn data

调试技巧:

  • 检查API响应状态码
  • 使用try-except处理网络异常

3. 机器学习房价预测

需求分析:

  • 使用线性回归模型
  • 评估模型性能
  • 部署预测接口

实现步骤:

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split# 加载数据
data = pd.read_csv('housing.csv')
X = data[['size', 'rooms']]
y = data['price']# 训练模型
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = LinearRegression()
model.fit(X_train, y_train)# 评估
score = model.score(X_test, y_test)
print(f"模型R2分数: {score:.2f}")

调试技巧:

  • 检查数据分布
  • 尝试特征工程提高模型性能

1. 电商数据分析系统

2. Web爬虫应用

需求分析:

  • 使用requests和BeautifulSoup抓取网页数据
  • 提取特定信息并存储到CSV文件
  • 实现分页爬取和异常处理

实现步骤:

import requests
from bs4 import BeautifulSoup
import csvheaders = {'User-Agent': 'Mozilla/5.0'}def scrape_page(url):try:response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, 'html.parser')# 提取数据示例items = []for item in soup.select('.product-item'):name = item.select_one('.name').text.strip()price = item.select_one('.price').text.strip()items.append({'name': name, 'price': price})return itemsexcept Exception as e:print(f"爬取失败: {e}")return []# 主程序
base_url = "https://example.com/products?page="
all_items = []for page in range(1, 6):  # 爬取5页items = scrape_page(base_url + str(page))all_items.extend(items)print(f"已爬取第{page}页,共{len(items)}条数据")# 保存到CSV
with open('products.csv', 'w', newline='') as f:writer = csv.DictWriter(f, fieldnames=['name', 'price'])writer.writeheader()writer.writerows(all_items)

调试技巧:

  • 使用print输出中间结果检查数据提取是否正确
  • 设置time.sleep避免请求过于频繁
  • 使用try-except捕获网络异常

3. 自动化测试框架

需求分析:

  • 支持Web UI自动化测试
  • 生成测试报告
  • 支持并行测试

实现步骤:

from selenium import webdriver
import unittestclass TestWebsite(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()cls.driver.implicitly_wait(10)def test_homepage(self):self.driver.get("http://example.com")self.assertIn("Example Domain", self.driver.title)def test_search(self):self.driver.get("http://example.com")search_box = self.driver.find_element_by_name("q")search_box.send_keys("Python")search_box.submit()self.assertIn("Python", self.driver.page_source)@classmethoddef tearDownClass(cls):cls.driver.quit()if __name__ == "__main__":unittest.main()

调试技巧:

  • 使用driver.save_screenshot()保存错误截图
  • 增加显式等待避免元素未加载问题
  • 使用HTMLTestRunner生成美观的测试报告

1. 电商数据分析系统

需求分析:

  • 从CSV文件读取销售数据
  • 计算每日/每月销售额
  • 生成可视化报表

实现步骤:

import pandas as pd
import matplotlib.pyplot as pltdef sales_analysis():# 1. 读取数据df = pd.read_csv('sales.csv')# 2. 数据处理df['date'] = pd.to_datetime(df['date'])daily_sales = df.groupby(df['date'].dt.date)['amount'].sum()# 3. 可视化plt.figure(figsize=(10,6))daily_sales.plot(kind='bar')plt.title('每日销售额')plt.savefig('daily_sales.png')

调试技巧:

  • 使用df.head()检查数据读取是否正确
  • 打印中间结果验证数据处理逻辑

2. 天气查询应用

需求分析:

  • 调用天气API获取实时数据
  • 支持多城市查询
  • 缓存历史查询记录

实现步骤:

import requests
import jsonclass WeatherApp:def __init__(self, api_key):self.api_key = api_keyself.history = {}def get_weather(self, city):url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={self.api_key}"response = requests.get(url)data = json.loads(response.text)self.history[city] = datareturn data

调试技巧:

  • 检查API响应状态码
  • 使用try-except处理网络异常

3. 自动化测试框架

需求分析:

  • 支持Web UI自动化测试
  • 生成测试报告
  • 支持并行测试

实现步骤:

from selenium import webdriver
import unittestclass TestWebsite(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()def test_homepage(self):self.driver.get("http://example.com")self.assertIn("Example", self.driver.title)@classmethoddef tearDownClass(cls):cls.driver.quit()

调试技巧:

  • 添加显式等待处理元素加载
  • 使用Page Object模式提高可维护性

4. 机器学习房价预测

需求分析:

  • 使用线性回归模型
  • 评估模型性能
  • 部署预测接口

实现步骤:

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split# 加载数据
data = pd.read_csv('housing.csv')
X = data[['size', 'rooms']]
y = data['price']# 训练模型
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = LinearRegression()
model.fit(X_train, y_train)# 评估
score = model.score(X_test, y_test)
print(f"模型R2分数: {score:.2f}")

调试技巧:

  • 检查数据分布
  • 尝试特征工程提高模型性能

5. 区块链简易实现

需求分析:

  • 实现区块链数据结构
  • 支持交易验证
  • 工作量证明机制

实现步骤:

import hashlib
import json
from time import timeclass Block:def __init__(self, index, transactions, timestamp, previous_hash):self.index = indexself.transactions = transactionsself.timestamp = timestampself.previous_hash = previous_hashself.hash = self.calculate_hash()def calculate_hash(self):block_string = json.dumps(self.__dict__, sort_keys=True)return hashlib.sha256(block_string.encode()).hexdigest()

调试技巧:

  • 打印区块哈希验证计算逻辑
  • 使用单元测试验证区块链完整性
  1. 计算器程序
# 简单计算器实现
import operatordef calculator():operations = {'+': operator.add,'-': operator.sub,'*': operator.mul,'/': operator.truediv}num1 = float(input("输入第一个数字: "))op = input("选择操作(+ - * /): ")num2 = float(input("输入第二个数字: "))result = operations[op](num1, num2)print(f"结果: {result}")calculator()
  1. 文件管理系统
# 基础文件管理
import osdef file_manager():while True:print("\n文件管理系统")print("1. 列出文件")print("2. 创建文件")print("3. 删除文件")print("4. 退出")choice = input("选择操作: ")if choice == '1':files = os.listdir('.')print("当前目录文件:")for f in files:print(f)elif choice == '2':filename = input("输入文件名: ")with open(filename, 'w') as f:f.write("")print(f"文件 {filename} 已创建")elif choice == '3':filename = input("输入要删除的文件名: ")if os.path.exists(filename):os.remove(filename)print(f"文件 {filename} 已删除")else:print("文件不存在")elif choice == '4':breakelse:print("无效选择")file_manager()
  1. 网络爬虫
# 简单网页爬虫
import requests
from bs4 import BeautifulSoupdef simple_crawler(url):try:response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')print(f"网页标题: {soup.title.string}")print("所有链接:")for link in soup.find_all('a'):print(link.get('href'))except Exception as e:print(f"错误: {e}")simple_crawler('https://www.python.org')
  1. Web应用(Flask/Django)
# Flask示例
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return "Hello, Python!"if __name__ == '__main__':app.run()
  1. 数据可视化
# 使用matplotlib绘图
import matplotlib.pyplot as pltdef plot_example():x = [1, 2, 3, 4, 5]y = [2, 4, 6, 8, 10]plt.plot(x, y)plt.title("简单折线图")plt.xlabel("X轴")plt.ylabel("Y轴")plt.show()plot_example()

项目开发建议

  1. 从简单项目开始:先完成基础功能,再逐步添加复杂特性
  2. 版本控制:使用Git管理代码版本
  3. 文档编写:为每个项目编写README说明
  4. 测试驱动:先写测试用例再开发功能
  5. 代码重构:定期优化代码结构和性能

每天学习2-3小时,坚持项目实践,1个月后你将掌握Python实际开发能力!
建议学习路径:

  1. 第1周: 基础语法和函数
  2. 第2周: 面向对象编程
  3. 第3周: 标准库和项目实践
  4. 第4周: 高级特性和框架学习

常见问题

  1. Python版本选择

    • 推荐使用Python 3.8+版本,新特性更丰富且兼容性好
    • 使用python --version检查当前版本
  2. 虚拟环境使用

    # 创建虚拟环境
    python -m venv myenv# 激活虚拟环境(Linux/Mac)
    source myenv/bin/activate# 安装包到虚拟环境
    pip install package_name# 退出虚拟环境
    deactivate
    
  3. 性能优化技巧

    • 使用列表推导式替代循环
    # 传统方式
    squares = []
    for x in range(10):squares.append(x**2)# 列表推导式
    squares = [x**2 for x in range(10)]
    
    • 使用生成器节省内存
    # 生成器表达式
    gen = (x**2 for x in range(1000000))# 生成器函数
    def generate_squares(n):for x in range(n):yield x**2
    
  4. 模块导入错误

    try:import requests
    except ImportError:print("请先安装requests模块: pip install requests")
    
  5. 编码问题

    • 在文件开头添加# -*- coding: utf-8 -*-解决中文编码问题
    • 使用.encode('utf-8').decode('utf-8')处理字符串编码
  6. 性能优化

    • 使用timeit模块测试代码执行时间
    • 避免不必要的循环和递归

调试技巧

  1. print调试

    print(f"变量值: {variable}")  # 简单有效
    
  2. 日志记录进阶

    import logging# 配置日志
    logging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',filename='app.log'
    )# 不同级别日志
    logging.debug('调试信息')
    logging.info('普通信息')
    logging.warning('警告信息')
    logging.error('错误信息')
    logging.critical('严重错误')
    
  3. 性能分析

    import cProfiledef slow_function():total = 0for i in range(1000000):total += ireturn total# 运行性能分析
    cProfile.run('slow_function()')
    
  4. 内存分析

    import tracemalloctracemalloc.start()# 你的代码
    data = [i for i in range(1000000)]snapshot = tracemalloc.take_snapshot()
    top_stats = snapshot.statistics('lineno')for stat in top_stats[:10]:print(stat)
    
  5. pdb调试器

    import pdb; pdb.set_trace()  # 设置断点
    
  6. 日志记录

    import logging
    logging.basicConfig(level=logging.DEBUG)
    logging.debug('调试信息')
    
  7. IDE调试工具

    • 使用VS Code/PyCharm等IDE的调试功能
    • 设置断点、单步执行、查看变量值
  8. 异常处理

    try:# 可能出错的代码
    except Exception as e:print(f"错误类型: {type(e).__name__}")print(f"错误详情: {str(e)}")
    

相关文章:

【python】速通笔记

Python学习路径 - 从零基础到入门 环境搭建 安装Python Windows: 从官网下载安装包 https://www.python.org/downloads/Mac/Linux: 通常已预装&#xff0c;可通过终端输入python3 --version检查 配置开发环境 推荐使用VS Code或PyCharm作为代码编辑器安装Python扩展插件创建第…...

简易Minecraft python

废话多说 以下是一个基于Python和ModernGL的简化版3D沙盒游戏框架。由于代码长度限制&#xff0c;这里提供一个核心实现&#xff08;约500行&#xff09;&#xff0c;您可以通过添加更多功能和内容来扩展它&#xff1a; python import pygame import moderngl import numpy a…...

Linux信号处理解析:从入门到实战

Linux信号处理全解析&#xff1a;从入门到实战 一、初识Linux信号&#xff1a;系统级的"紧急电话" 信号是什么&#xff1f; 信号是Linux系统中进程间通信的"紧急通知"&#xff0c;如同现实中的交通信号灯。当用户按下CtrlC&#xff08;产生SIGINT信号&…...

2025-04-04 Unity 网络基础5——TCP分包与黏包

文章目录 1 分包与黏包2 解决方案2.1 数据接口2.2 定义消息2.3 NetManager2.4 分包、黏包处理 3 测试3.1 服务端3.2 客户端3.3 直接发送3.4 黏包发送3.5 分包发送3.6 分包、黏包发送3.7 其他 1 分包与黏包 ​ 分包、黏包指在网络通信中由于各种因素&#xff08;网络环境、API …...

Ubuntu 安装 JMeter:为你的服务器配置做好准备

Apache JMeter 是一个开源的负载测试工具&#xff0c;可以用于测试静态和动态资源&#xff0c;确定服务器的性能和稳定性。在本文中&#xff0c;我们将讨论如何下载和安装 JMeter。 安装 Java&#xff08;已安装 Java 的此步骤可跳过&#xff09; 要下载 Java&#xff0c;请遵…...

swift-oc和swift block和代理

一、闭包或block 1.1、swift 闭包表达式作为参数的形式 一、闭包的定义 func exec(v1: Int, v2: Int, fn: (Int, Int) -> Int) { print(fn(v1, v2)) } 二、调用 exec(v1: 10, v2: 20, fn: { (v1: Int, v2: Int) -> Int in return v1 v2 }) 1.2、swift 闭包表达式作为…...

【数据结构】_队列

hello 友友们~ 今天我们要开始学习队列啦~ 话不多说&#xff0c;让我们开始吧&#xff01;GO! 1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表。 队列具有先进先出FIFO(First In First Out) 入队列&#x…...

【软考中级软件设计师】数据表示:原码、反码、补码、移码、浮点数

数据表示 一、数据表示1、整数的表示(1) 原码(2) 反码(3) 补码&#xff1a;(4) 移码 2、浮点数的表示&#xff08;IEEE 754标准&#xff09; 一、数据表示 计算机使用的是二进制&#xff0c;也就是0和1的组合。所有的数据&#xff0c;无论是数字、文字还是图片、声音&#xff…...

Linux(十二)信号

今天我们就要来一起学习信号啦&#xff01;&#xff01;&#xff01;还记得小编在之前的文章中说过的ctrlc吗&#xff1f;之前小编没有详细介绍过&#xff0c;现在我们就要来学习啦&#xff01;&#xff01;&#xff01; 一、信号的基本介绍 首先&#xff0c;小编带领大家先一…...

迪杰斯特拉+二分+优先队列+拓扑+堆优化(奶牛航线Cowroute、架设电话线dd、路障Roadblocks、奶牛交通Traffic)

原文地址 https://fmcraft.top/index.php/Programming/2025040402.html 主要算法 迪杰斯特拉Dijkstra 题目列表 P1&#xff1a;奶牛航线Cowroute 题目描述 题目描述 Bessie已经厌倦了农场冬天的寒冷气候&#xff0c;她决定坐飞机去更温暖的地方去度假。不幸的是&#xf…...

【数据结构】树的介绍

目录 一、树1.1什么是树&#xff1f;1.2 树的概念与结构1.3树的相关术语1.4 树形结构实际运用场景 二、二叉树2.1 概念与结构2.2 特殊的二叉树2.2.1 满二叉树2.2.2 完全二叉树 个人主页&#xff0c;点击这里~ 数据结构专栏&#xff0c;点击这里~ 一、树 1.1什么是树&#xff1…...

【CF】Day24——Codeforces Round 994 (Div. 2) D

D. Shift Esc 题目&#xff1a; 思路&#xff1a; 典DP的变种 如果这一题没有这个变换操作&#xff0c;那么是一个很典型的二维dp&#xff0c;每一个格子我们都选择上面和左边中的最小值即可 而这题由于可以变换&#xff0c;那我们就要考虑变换操作&#xff0c;首先一个显然…...

Python 字典

Python 字典 字典的介绍 字典不仅可以保存值&#xff0c;还能对值进行描述使用大括号来表示一个字典&#xff0c;不仅有值 value &#xff0c;还有值的描述 key字典里的数据都是以键值对 key-value 的形式来保留的key 和 value 之间用冒号 : 来连接多个键值对之间用逗号 , 来…...

yolov12检测 聚类轨迹运动速度

目录 分割算法api版: 分割算法: yolo_kmean.py 优化版: 第1步,检测生成json 第2步骤聚类: 分割算法api版: import json import os from glob import globimport cv2 import imageio import numpy as np from scipy.ndimage import gaussian_filter1d from scipy.s…...

【Lua】pcall使用详解

目录 基本语法核心作用基础示例示例 1&#xff1a;捕获一个简单错误示例 2&#xff1a;调用不存在的函数 高级用法1. 传递多个参数和接收多个返回值2. 捕获带 error 主动抛出的错误3. 匿名函数与 pcall 使用场景注意事项总结 在 Lua 中&#xff0c;pcall&#xff08;Protected …...

Floyd 算法 Java

图论算法实践&#xff1a;使用 Floyd 求任意两点最短路&#xff08;Java 实现&#xff09; 在图论算法中&#xff0c;Floyd-Warshall 算法是一个经典的动态规划算法&#xff0c;用于在一个加权图中寻找所有点对之间的最短路径。 场景描述 假设我们有一个包含 n 个点的无向图&…...

List结构之非实时榜单实战

像京东、淘宝等电商系统一般都会有热销的商品榜单&#xff0c;比如热销手机榜单&#xff0c;热销电脑榜单&#xff0c;这些都是非实时的榜单。为什么是非实时的呢&#xff1f;因为完全实时的计算和排序对于资源消耗较大&#xff0c;尤其是当涉及大量交易数据时。 一般来说&…...

OCR的备份与恢复

1.简介 在Oracle RAC环境中&#xff0c;ASM&#xff08;Automatic Storage Management&#xff09;管理的OCR&#xff08;Oracle Cluster Registry&#xff09;是集群的关键组件&#xff0c;存储集群配置和状态信息。 OCR的备份一般指物理备份&#xff0c;系统默认每4个小时自…...

算法思想之双指针(一)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;算法思想之双指针(一) 发布时间&#xff1a;2025.4.4 隶属专栏&#xff1a;算法 目录 双指针算法介绍对撞指针&#xff1a;快慢指针&#xff1a; 例题移动零题目链接题目描述算法思路代码实现 复写零题目链接题目描…...

Pascal语言的设备管理

Pascal语言的设备管理 引言 在计算机科学中&#xff0c;设备管理是操作系统的重要组成部分之一。设备管理指的是操作系统对外部设备的控制和协调&#xff0c;实现对各种设备的有效利用。Pascal语言作为一种教育性编程语言&#xff0c;虽然最初并不是为了直接进行设备管理而设…...

【MySQL】DML:添加-修改-删除数据 (数据操作语言) 学习笔记

DML (数据操作语言) 学习笔记 1. 数据表结构 首先创建员工表 employee&#xff1a; CREATE TABLE employee (id int unsigned NOT NULL AUTO_INCREMENT COMMENT ID,username varchar(20) NOT NULL COMMENT 用户名,password varchar(32) DEFAULT 123456 COMMENT 密码,name va…...

React编程高级主题:背压(Backpressure)处理

文章目录 **5.1 背压&#xff08;Backpressure&#xff09;概述****5.1.1 缓冲&#xff08;Buffer&#xff09;****1. 基本概念****2. 缓冲的实现方式****3. 适用场景****4. 潜在问题** **5.1.2 丢弃&#xff08;Drop&#xff09;****1. 基本概念****2. 丢弃的实现方式****3. 适…...

Spring IoCDI

IoC容器 前⾯我们提到IoC控制反转&#xff0c; 就是将对象的控制权交给Spring的IOC容器 &#xff0c;由IOC容器创建及管理对 象。 也就是bean的存储. 在类上⾯添加 RestController 和 Controller 注解, 就是把这个对象交给Spring管理 , Spring 框架启动时就会加载该类. 把对象…...

COBOL语言的数据库交互

COBOL语言的数据库交互 引言 随着信息技术的不断发展&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;已经成为现代应用程序中不可或缺的组成部分。在众多编程语言中&#xff0c;COBOL&#xff08;Common Business-Oriented Language&#xff09;以其在商业应用中的稳…...

【C++11(中)】—— 我与C++的不解之缘(三十一)

一、可变参数模版 基本语法&#xff1a; C11支持可变参数模版&#xff0c;简单来说就是支持可变数量参数的函数模版或者类模版&#xff1b; 可变数目的参数被称为参数包&#xff0c;存在两种参数包&#xff1a;模版参数包(表示0个或者多个模版参数)&#xff0c;函数参数包(表示…...

JavaScript学习19-事件类型之鼠标事件

1. 2. 3....

文件或目录损坏且无法读取:数据恢复的实战指南

在数字化时代&#xff0c;数据的重要性不言而喻。然而&#xff0c;在日常使用电脑、移动硬盘、U盘等存储设备时&#xff0c;我们难免会遇到“文件或目录损坏且无法读取”的提示。这一提示如同晴天霹雳&#xff0c;让无数用户心急如焚&#xff0c;尤其是当这些文件中存储着重要的…...

python爬虫:小程序逆向实战教程

根据我之前发表的文章&#xff0c;我们进行延伸实战https://blog.csdn.net/weixin_64809364/article/details/146981598?spm1001.2014.3001.5501 1. 想要爬取什么小程序&#xff0c;我们进行搜索 2. 找到我们vx小程序的文件地址&#xff0c;我们就可以进行破解 破解步骤强看…...

第二十节课:python实例五:身体质量指数BMI计算

python实例五&#xff1a;身体质量指数BMI计算 一、问题分析 BMI计算公式&#xff1a; BMI 体重(kg) / 身高(m)^2国际与国内标准对比 分类国际标准国内标准偏瘦<18.5<18.5正常18.5-2518.5-24偏胖25-3024-28肥胖≥30≥28 二、实现要点 输入处理 # 同时接收身高体重…...

八、重学C++—动态多态(运行期)

上一章节&#xff1a; 七、重学C—静态多态&#xff08;编译期&#xff09;-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146999362?spm1001.2014.3001.5502 本章节代码&#xff1a; cpp/dynamicPolymorphic.cpp CuiQingCheng/cppstudy - 码云 - 开源中…...

思维链 Chain-of-Thought(COT)

思维链 Chain-of-Thought&#xff08;COT&#xff09;&#xff1a;思维链的启蒙 3. 思维链 Chain-of-Thought&#xff08;COT&#xff09;存在问题&#xff1f;2. 思维链 Chain-of-Thought&#xff08;COT&#xff09;是思路是什么&#xff1f;1. 什么是 思维链 Chain-of-Thoug…...

React框架的Fiber架构

以下是关于 Fiber 架构 的系统梳理: 一、Fiber 架构的出现背景 React 15 及之前的问题 同步递归渲染:虚拟DOM的diff过程不可中断,导致主线程长时间阻塞。掉帧问题:复杂组件树渲染时,用户交互无法及时响应。无法实现增量渲染:无法拆分任务优先级,无法利用浏览器空闲时间。…...

PCI与PCIe接口的通信架构是主从模式吗?

PCI&#xff08;Peripheral Component Interconnect&#xff09;总线在通信架构上本质是主从模式&#xff0c;但其具体实现和角色分配在不同版本&#xff08;如传统PCI与PCI Express&#xff09;中存在差异。以下是详细分析&#xff1a; 传统PCI总线的主从模式 (1) 基本架构 主…...

【2011】【论文笔记】THz保护文化遗产——

前言 类型 太赫兹 + 文化保护 太赫兹 + 文化保护 太赫兹+文化保护 期刊 I E E E T R A N S A C T I O N S O N T E R A H E R...

状态机思想编程练习

状态机实现LED流水灯 本次实验&#xff0c;我们将利用状态机的思想来进行Verilog编程实现一个LED流水灯&#xff0c;并通过Modelsim来进行模拟仿真&#xff0c;再到DE2-115开发板上进行验证。 ​ 首先进行主要代码的编写。 module led (input sys_clk,input sys_…...

三部门新政力推智能家居 居然智家数智化转型迎利好东风

2025年3月&#xff0c;工业和信息化部、教育部、市场监管总局联合印发《轻工业数字化转型实施方案》&#xff0c;明确提出重点培育智能家居、智能穿戴、智能骑行、智慧养老等消费端场景&#xff0c;深化人工智能技术在家电、家具等领域的应用&#xff0c;推动产业链供应链智能化…...

CCF GESP C++编程 七级认证真题 2025年3月

C 七级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 B A B C B B B A D D A C B B D 一、单选题 第 1 题 下列哪个选项是C中的关键字&#xff1f; A. function B. class C. method D. object 第 2 题 下面代码输出的是&#xff08;&#xff09; int main()…...

【MySQL】navicat16 result字段识别不了

在mysql里面使用result字段 打印出来为空 之后换了个字段命名 使用outcome 成功能打印出来了。。 不知道是不是版本的问题...

【教学类-102-02】自制剪纸图案(留白边、沿线剪)02——Python+PS自动化添加虚线边框

背景需求: 01版本实现了对透明背景png图案边界线的扩展,黑线实线描边 【教学类-102-01】自制剪纸图案(留白边、沿线剪)01-CSDN博客文章浏览阅读974次,点赞15次,收藏7次。【教学类-102-01】自制剪纸图案(留白边、沿线剪)01https://blog.csdn.net/reasonsummer/article…...

CExercise_05_1函数_1.1素数(要对键盘录入的数据做参数校验)

题目&#xff1a; 编写函数实现以下功能&#xff1a; 键盘录入一个正整数&#xff0c;请判断它是否是一个素数&#xff0c;然后控制台输出对应的结果。要对键盘录入的数据做参数校验&#xff0c;素数是一个大于1的自然数&#xff0c;它仅能被1和自身整除。 关键点 分析&#xf…...

运算放大器(五)电压比较器

比较器在最常用的简单集成电路中排名第二&#xff0c;仅次于排名第一的运算放大器。 电压比较器是一种用来比较输入信号电压与参考电压大小&#xff0c;并将比较结果以高电平或低电平形式输出的一种信号处理电路&#xff0c;广泛应用于各种非正弦波的产生和变换电路中&#xf…...

蓝桥杯_PCF8591

目录 一 前言 二 引言 三 PCF8591介绍 &#xff08;1&#xff09;I2C通信 &#xff08;2&#xff09;原理图中的8591 四 代码层面 &#xff08;1&#xff09;根据题目所给的示范代码&#xff0c;实现ADC 1 为什么需要返回值&#xff0c;同时返回值是unsigned char&#x…...

Windows修改hosts文件让向日癸软件联网

Windows修改hosts文件让向日癸软件联网 前言一、查看向日葵软件使用的网址及IP1.清除dns记录2.打开向日葵软件并将dns记录导出txt 二、修改Windows服务器的hosts文件1.winx选择Windows PowerShell(管理员)2.在Windows PowerShell中输入如下内容&#xff1a;3.在hosts文件最后添…...

[MySQL初阶]MySQL数据类型

MySQL数据类型 1. 数据类型分类2. 数值类型2.1 tinyint类型2.2 bit类型2.3 float类型2.4 decimal类型3. 字符串类型3.1 char3.2 varchar3.3 日期和时间类型3.4 enum和set1. 数据类型分类 数据库中的类型决定了在存储位置中,占据的空间大小以及如何识别的问题。 2. 数值类型 2…...

JS用ES6和ES5分别实现:8字节长整数和字节数组的互转

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

【学Rust写CAD】29 Alpha256结构体(alpha256.rs)

源码 #[derive(Clone, Copy)] pub struct Alpha256(u32);impl Alpha256{#[inline]pub fn from(alpha:u32)->Alpha256{Alpha256(alpha1)}// Calculates 256 - (value * alpha256) / 255 in range [0,256],// for [0,255] value and [0,256] alpha256.#[inline]fn alpha_mul_…...

Titanic - Machine Learning from Disaster

数据集 通过网盘分享的文件&#xff1a; 链接: https://pan.baidu.com/s/17TLeF8PW2GSWTbAIJC69-A?pwd4dak 提取码: 4dak 准备工作 # 导入必要的库 import numpy as np # 用于数值计算&#xff08;如矩阵运算、数学函数等&#xff09; import pandas as pd # 用于数据…...

GoFrame框架中Prometheus Metric组件监控的优势与实践

文章摘要 GoFrame 是一款轻量、高效且模块化的 Go 语言全能型框架&#xff0c;在 Go 生态中以其企业级应用能力和简洁设计受到开发者青睐。随着微服务架构的普及&#xff0c;性能监控成为开发中不可或缺的一环&#xff0c;而 Prometheus 凭借其强大的时间序列数据处理能力和灵…...

SQL语言的物联网

以SQL语言的物联网 引言 物联网&#xff08;IoT&#xff0c;Internet of Things&#xff09;作为一个新兴的技术领域&#xff0c;正迅速改变着我们的生活方式和工作模式。它通过将各种物体连接到互联网&#xff0c;实现了设备之间的智能通信与数据交换。随着物联网的普及&…...

戴尔笔记本 ubuntu 22.04 开机后进入initramfs界面

问题 在 Ubuntu 22.04 启动时进入 initramfs 界面&#xff0c;并提示 Gave up waiting for root device. Common problems: - Boot args (cat /proc/cmdline)- Check rootdelay (did the system wait long enough?) - Missing modules (cat /proc/modules; ls /dev) ALERT! …...