第4节:Python编程基础 - Python语法快速回顾
1. Python简介与环境配置
Python是一种高级、解释型、通用的编程语言,由Guido van Rossum于1991年首次发布。
它以简洁明了的语法和强大的功能而闻名,广泛应用于Web开发、数据分析、人工智能、科学计算等领域。

1.1 Python的特点
-
简单易学:语法清晰,接近自然语言
-
跨平台:可在Windows、Linux、Mac等系统上运行
-
丰富的标准库:内置大量有用的模块和函数
-
支持多种编程范式:面向对象、函数式、过程式编程
-
动态类型:无需声明变量类型
-
自动内存管理:垃圾回收机制
1.2 安装Python
从Python官网:
https://soft.fengyunzhice.cn/softs/python.html?ver=gjc-1&bd_vid=10566552077197807836
安装的时候选择 Python to PATH 选项。
验证安装:
# 在命令行/终端中输入
python --version
# 或
python3 --version
1.3 运行Python代码
Python代码可以通过以下几种方式运行:
-
交互式解释器(REPL):
>>> print("Hello, World!") Hello, World! -
脚本文件(.py):
# hello.py print("Hello, World!")# 在命令行运行 python hello.py -
Jupyter Notebook等交互式环境
2. 基础语法
2.1 变量与数据类型
Python是动态类型语言,变量无需声明类型。
# 变量赋值
x = 10 # 整数
y = 3.14 # 浮点数
name = "Alice" # 字符串
is_active = True # 布尔值# 多变量赋值
a, b, c = 1, 2, "three"# 查看变量类型
print(type(x)) # <class 'int'>
print(type(y)) # <class 'float'>
print(type(name)) # <class 'str'>
print(type(is_active))# <class 'bool'>
2.2 基本数据类型
-
数字类型:
-
int(整数):
10,-5,0 -
float(浮点数):
3.14,-0.001,2.0 -
complex(复数):
1 + 2j
-
-
布尔类型:
-
True -
False
-
-
字符串:
-
用单引号或双引号括起来:
'hello',"world" -
三引号用于多行字符串:
multi_line = """这是 一个 多行 字符串"""
-
2.3 类型转换
# 显式类型转换
int_num = int("123") # 字符串转整数
float_num = float("3.14") # 字符串转浮点数
str_num = str(123) # 数字转字符串
bool_val = bool(1) # 数字转布尔值 (0为False,非0为True)# 隐式类型转换(自动)
result = 3 + 4.5 # int + float = float
2.4 运算符
-
算术运算符:
a = 10 b = 3print(a + b) # 13 print(a - b) # 7 print(a * b) # 30 print(a / b) # 3.333... (浮点除法) print(a // b) # 3 (整数除法) print(a % b) # 1 (取模) print(a ** b) # 1000 (幂运算) -
比较运算符:
print(a == b) # False
print(a != b) # True
print(a > b) # True
print(a < b) # False
print(a >= b) # True
print(a <= b) # False
-
逻辑运算符:
x = True y = Falseprint(x and y) # False print(x or y) # True print(not x) # False -
赋值运算符:
a = 5 a += 2 # a = a + 2 → 7 a -= 1 # a = a - 1 → 6 a *= 3 # a = a * 3 → 18 a /= 2 # a = a / 2 → 9.0 a //= 2 # a = a // 2 → 4.0 a %= 3 # a = a % 3 → 1.0 a **= 2 # a = a ** 2 → 1.0 -
位运算符(较少使用):
a = 0b1010 # 10 b = 0b1100 # 12print(bin(a & b)) # 0b1000 (AND) print(bin(a | b)) # 0b1110 (OR) print(bin(a ^ b)) # 0b0110 (XOR) print(bin(~a)) # -0b1011 (NOT) print(bin(a << 2)) # 0b101000 (左移) print(bin(b >> 2)) # 0b0011 (右移)
2.5 输入输出
# 输出
print("Hello, World!") # 打印字符串
print("The value is", x) # 打印多个值,用空格分隔
print(f"The value is {x}") # f-string (Python 3.6+)# 输入
name = input("Enter your name: ") # 获取用户输入
age = int(input("Enter your age: ")) # 转换为整数
print(f"Hello, {name}! You are {age} years old.")
3. 控制结构
3.1 条件语句
# if-elif-else结构
age = 18if age < 13:print("Child")
elif 13 <= age < 18:print("Teenager")
else:print("Adult")# 简化写法
result = "Even" if age % 2 == 0 else "Odd"
print(result)
3.2 循环结构
-
while循环:
count = 0 while count < 5:print(count)count += 1 else:print("Loop completed") # 可选的else块 -
for循环:
# 遍历序列 fruits = ["apple", "banana", "cherry"] for fruit in fruits:print(fruit)# 使用range for i in range(5): # 0到4print(i)for i in range(2, 6): # 2到5print(i)for i in range(1, 10, 2): # 1到9,步长为2print(i) -
循环控制:
for i in range(10):if i == 3:continue # 跳过本次迭代if i == 7:break # 终止循环print(i)
4. 数据结构
4.1 列表(List)
有序、可变、可重复元素的集合。
# 创建列表
numbers = [1, 2, 3, 4, 5]
fruits = ["apple", "banana", "cherry"]
mixed = [1, "hello", 3.14, True]# 访问元素
print(numbers[0]) # 1 (正向索引,从0开始)
print(numbers[-1]) # 5 (负向索引,-1表示最后一个)# 切片操作
print(numbers[1:3]) # [2, 3] (不包括结束索引)
print(numbers[:3]) # [1, 2, 3]
print(numbers[2:]) # [3, 4, 5]
print(numbers[::2]) # [1, 3, 5] (步长为2)# 修改列表
numbers[0] = 10 # 修改元素
numbers.append(6) # 添加元素到末尾
numbers.insert(2, 99) # 在索引2处插入99
numbers.remove(3) # 删除第一个值为3的元素
popped = numbers.pop() # 删除并返回最后一个元素
popped = numbers.pop(1) # 删除并返回索引1的元素# 列表操作
combined = numbers + fruits # 列表拼接
repeated = fruits * 2 # 列表重复
length = len(numbers) # 列表长度# 列表方法
numbers.sort() # 排序(原地修改)
sorted_numbers = sorted(numbers) # 返回新排序列表
numbers.reverse() # 反转列表
index = fruits.index("banana") # 查找元素索引
count = numbers.count(2) # 计数# 列表推导式
squares = [x**2 for x in range(10)]
even_squares = [x**2 for x in range(10) if x % 2 == 0]
4.2 元组(Tuple)
有序、不可变、可重复元素的集合。
# 创建元组
point = (10, 20)
colors = ("red", "green", "blue")
single = (5,) # 单元素元组需要逗号# 访问元素
print(point[0]) # 10
print(colors[-1]) # blue# 元组不可变
# point[0] = 15 # 错误!不能修改元组# 元组解包
x, y = point
print(x, y) # 10 20# 元组方法
index = colors.index("green") # 查找索引
count = colors.count("red") # 计数
4.3 集合(Set)
无序、可变、不重复元素的集合。
# 创建集合
unique_numbers = {1, 2, 3, 3, 4} # {1, 2, 3, 4}
empty_set = set() # 不能用{},这是空字典# 集合操作
unique_numbers.add(5) # 添加元素
unique_numbers.remove(2) # 移除元素,不存在则报错
unique_numbers.discard(10) # 移除元素,不存在不报错
popped = unique_numbers.pop() # 随机移除并返回一个元素# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}print(a | b) # 并集 {1, 2, 3, 4, 5}
print(a & b) # 交集 {3}
print(a - b) # 差集 {1, 2}
print(a ^ b) # 对称差集 {1, 2, 4, 5}# 集合推导式
squares = {x**2 for x in range(5)} # {0, 1, 4, 9, 16}
4.4 字典(Dictionary)
键值对的集合,键唯一且不可变。
# 创建字典
person = {"name": "Alice", "age": 25, "city": "New York"}
empty_dict = {}# 访问元素
print(person["name"]) # Alice
print(person.get("age")) # 25
print(person.get("email", "N/A")) # 键不存在返回默认值"N/A"# 修改字典
person["age"] = 26 # 修改值
person["email"] = "alice@example.com" # 添加新键值对
del person["city"] # 删除键值对
popped = person.pop("age") # 删除并返回值# 字典方法
keys = person.keys() # 所有键
values = person.values() # 所有值
items = person.items() # 所有键值对# 字典遍历
for key in person:print(key, person[key])for key, value in person.items():print(key, value)# 字典推导式
squares = {x: x**2 for x in range(5)} # {0:0, 1:1, 2:4, 3:9, 4:16}
5. 函数
5.1 定义与调用函数
# 定义函数
def greet(name):"""这是一个问候函数""" # 文档字符串return f"Hello, {name}!"# 调用函数
message = greet("Alice")
print(message) # Hello, Alice!# 查看函数文档
print(greet.__doc__) # 这是一个问候函数
5.2 参数传递
# 位置参数
def power(base, exponent):return base ** exponentprint(power(2, 3)) # 8# 关键字参数
print(power(exponent=3, base=2)) # 8# 默认参数
def greet(name, greeting="Hello"):return f"{greeting}, {name}!"print(greet("Alice")) # Hello, Alice!
print(greet("Bob", "Hi")) # Hi, Bob!# 可变参数 (*args)
def sum_numbers(*args):return sum(args)print(sum_numbers(1, 2, 3)) # 6
print(sum_numbers(4, 5, 6, 7)) # 22# 关键字可变参数 (**kwargs)
def print_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_info(name="Alice", age=25, city="NY")
# name: Alice
# age: 25
# city: NY
5.3 返回值
# 多返回值
def min_max(numbers):return min(numbers), max(numbers)minimum, maximum = min_max([3, 1, 4, 1, 5, 9, 2])
print(minimum, maximum) # 1 9# 返回函数
def make_adder(x):def adder(y):return x + yreturn adderadd5 = make_adder(5)
print(add5(3)) # 8
5.4 作用域
x = 10 # 全局变量def my_func():global x # 声明使用全局变量x = 20 # 修改全局变量y = 30 # 局部变量my_func()
print(x) # 20
# print(y) # 错误,y未定义
5.5 Lambda函数
匿名函数,用于简单操作。
# 简单lambda
square = lambda x: x**2
print(square(5)) # 25# 作为参数
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared) # [1, 4, 9, 16, 25]# 排序
pairs = [(1, 'one'), (2, 'two'), (3, 'three')]
pairs.sort(key=lambda pair: pair[1]) # 按第二个元素排序
print(pairs) # [(1, 'one'), (3, 'three'), (2, 'two')]
6. 文件操作
6.1 文件读写
# 写入文件
with open("example.txt", "w", encoding="utf-8") as f:f.write("Hello, World!\n")f.write("This is a text file.\n")# 读取文件
with open("example.txt", "r", encoding="utf-8") as f:content = f.read() # 读取全部内容print(content)# 回到文件开头f.seek(0)lines = f.readlines() # 读取所有行print(lines)# 逐行读取
with open("example.txt", "r", encoding="utf-8") as f:for line in f:print(line.strip()) # 去除换行符
6.2 文件模式
-
'r':读取(默认) -
'w':写入(会覆盖) -
'a':追加 -
'x':创建新文件并写入 -
'b':二进制模式 -
't':文本模式(默认) -
'+':读写模式
6.3 CSV文件操作
import csv# 写入CSV
with open("data.csv", "w", newline="") as csvfile:writer = csv.writer(csvfile)writer.writerow(["Name", "Age", "City"])writer.writerow(["Alice", 25, "New York"])writer.writerow(["Bob", 30, "Los Angeles"])# 读取CSV
with open("data.csv", "r") as csvfile:reader = csv.reader(csvfile)for row in reader:print(row)
7. 异常处理
try:# 可能出错的代码num = int(input("Enter a number: "))result = 10 / numprint("Result:", result)
except ValueError:print("Invalid input. Please enter a number.")
except ZeroDivisionError:print("Cannot divide by zero.")
except Exception as e:print(f"An error occurred: {e}")
else:print("No errors occurred.") # 无异常时执行
finally:print("This always executes.") # 无论是否有异常都执行# 自定义异常
class MyError(Exception):passdef check_value(x):if x < 0:raise MyError("Value cannot be negative")try:check_value(-5)
except MyError as e:print(e)
8. 面向对象编程
8.1 类与对象
class Dog:# 类属性species = "Canis familiaris"# 初始化方法def __init__(self, name, age):self.name = name # 实例属性self.age = age# 实例方法def bark(self):return f"{self.name} says woof!"# 字符串表示def __str__(self):return f"{self.name} is {self.age} years old"# 创建实例
dog1 = Dog("Buddy", 5)
dog2 = Dog("Molly", 3)# 访问属性和方法
print(dog1.name) # Buddy
print(dog2.bark()) # Molly says woof!
print(dog1) # Buddy is 5 years old
print(Dog.species) # Canis familiaris
8.2 继承
class Bulldog(Dog): # 继承Dog类def bark(self):return f"{self.name} says woof loudly!"# 新增方法def run(self, speed):return f"{self.name} runs at {speed} mph"bulldog = Bulldog("Spike", 4)
print(bulldog.bark()) # Spike says woof loudly!
print(bulldog.run(10)) # Spike runs at 10 mph
8.3 封装
class BankAccount:def __init__(self, account_holder, balance=0):self._account_holder = account_holder # 保护属性self.__balance = balance # 私有属性# 公开方法def deposit(self, amount):if amount > 0:self.__balance += amountreturn Truereturn Falsedef withdraw(self, amount):if 0 < amount <= self.__balance:self.__balance -= amountreturn Truereturn Falsedef get_balance(self):return self.__balanceaccount = BankAccount("Alice", 1000)
account.deposit(500)
account.withdraw(200)
print(account.get_balance()) # 1300
# print(account.__balance) # 错误,无法直接访问私有属性
8.4 多态
class Cat:def speak(self):return "Meow"class Duck:def speak(self):return "Quack"def animal_sound(animal):print(animal.speak())cat = Cat()
duck = Duck()animal_sound(cat) # Meow
animal_sound(duck) # Quack
9. 模块与包
9.1 导入模块
# 导入整个模块
import math
print(math.sqrt(16)) # 4.0# 导入特定函数/类
from random import randint
print(randint(1, 10)) # 随机整数# 导入并重命名
import numpy as np
from datetime import datetime as dt# 导入所有内容(不推荐)
from os import *
9.2 创建模块
-
创建
mymodule.py:def greet(name):return f"Hello, {name}!"def add(a, b):return a + bPI = 3.14159 -
使用模块:
import mymoduleprint(mymodule.greet("Alice")) # Hello, Alice! print(mymodule.add(2, 3)) # 5 print(mymodule.PI) # 3.14159
9.3 创建包
包是包含__init__.py文件的目录。
目录结构:
mypackage/__init__.pymodule1.pymodule2.pysubpackage/__init__.pymodule3.py
使用包:
from mypackage import module1
from mypackage.subpackage import module3
10. 常用标准库
10.1 os模块
import os# 文件和目录操作
print(os.getcwd()) # 当前工作目录
os.chdir("/path/to/dir") # 改变工作目录
print(os.listdir()) # 列出目录内容# 路径操作
file_path = os.path.join("folder", "file.txt") # 跨平台路径拼接
print(os.path.exists(file_path)) # 检查路径是否存在
print(os.path.isfile(file_path)) # 检查是否是文件
print(os.path.isdir(file_path)) # 检查是否是目录# 环境变量
print(os.environ.get("HOME")) # 获取环境变量
10.2 sys模块
import sys# 命令行参数
print(sys.argv) # 命令行参数列表# 退出程序
# sys.exit(0) # 正常退出
# sys.exit(1) # 异常退出# Python路径
print(sys.path) # Python模块搜索路径# 版本信息
print(sys.version)
10.3 datetime模块
from datetime import datetime, date, time, timedelta# 当前时间
now = datetime.now()
print(now) # 2023-05-15 14:30:00.123456# 创建特定日期时间
dt = datetime(2023, 5, 15, 14, 30)
print(dt.year, dt.month, dt.day) # 2023 5 15# 格式化
print(dt.strftime("%Y-%m-%d %H:%M:%S")) # 2023-05-15 14:30:00# 解析字符串
dt = datetime.strptime("2023-05-15", "%Y-%m-%d")# 时间运算
tomorrow = dt + timedelta(days=1)
print(tomorrow) # 2023-05-16 00:00:00
10.4 json模块
import json# Python对象转JSON字符串
data = {"name": "Alice","age": 25,"is_active": True,"skills": ["Python", "Java"]
}json_str = json.dumps(data, indent=2)
print(json_str)# JSON字符串转Python对象
parsed_data = json.loads(json_str)
print(parsed_data["name"]) # Alice# 文件操作
with open("data.json", "w") as f:json.dump(data, f)with open("data.json", "r") as f:loaded_data = json.load(f)
10.5 random模块
import random# 随机数
print(random.random()) # [0.0, 1.0) 的随机浮点数
print(random.uniform(1, 10)) # [1, 10] 的随机浮点数
print(random.randint(1, 6)) # [1, 6] 的随机整数# 序列操作
items = ["apple", "banana", "cherry"]
print(random.choice(items)) # 随机选择一个元素
random.shuffle(items) # 打乱序列
print(items)
print(random.sample(items, 2)) # 随机选择k个不重复元素
11. 进阶特性
11.1 生成器
# 生成器函数
def count_down(n):while n > 0:yield nn -= 1for num in count_down(5):print(num) # 5, 4, 3, 2, 1# 生成器表达式
squares = (x**2 for x in range(10))
print(next(squares)) # 0
print(next(squares)) # 1
11.2 装饰器
# 简单装饰器
def my_decorator(func):def wrapper():print("Before function call")func()print("After function call")return wrapper@my_decorator
def say_hello():print("Hello!")say_hello()
# Before function call
# Hello!
# After function call# 带参数的装饰器
def repeat(n):def decorator(func):def wrapper(*args, **kwargs):for _ in range(n):result = func(*args, **kwargs)return resultreturn wrapperreturn decorator@repeat(3)
def greet(name):print(f"Hello, {name}!")greet("Alice")
# Hello, Alice!
# Hello, Alice!
# Hello, Alice!
11.3 上下文管理器
# 使用with语句
with open("file.txt", "r") as f:content = f.read()# 自定义上下文管理器
class Timer:def __enter__(self):import timeself.start = time.time()return selfdef __exit__(self, exc_type, exc_val, exc_tb):import timeself.end = time.time()print(f"Elapsed time: {self.end - self.start:.2f} seconds")with Timer():# 执行一些操作sum(range(1000000)))
12. Python最佳实践
-
遵循PEP 8风格指南:
-
使用4个空格缩进
-
行长度不超过79字符
-
导入顺序:标准库、第三方库、本地库
-
命名约定:
-
变量和函数:
lower_case_with_underscores -
常量:
UPPER_CASE_WITH_UNDERSCORES -
类:
CamelCase
-
-
-
使用虚拟环境:
python -m venv myenv # 创建虚拟环境 source myenv/bin/activate # 激活(Linux/Mac) myenv\Scripts\activate # 激活(Windows) deactivate # 退出虚拟环境 -
使用类型提示(Python 3.5+):
def greet(name: str) -> str:return f"Hello, {name}!"from typing import List, Dict, Optionaldef process_items(items: List[str], counts: Dict[str, int]) -> Optional[int]:# 函数体pass -
编写文档字符串:
def add(a, b):"""计算两个数的和参数:a (int): 第一个数b (int): 第二个数返回:int: 两个数的和"""return a + b -
单元测试:
import unittestclass TestMath(unittest.TestCase):def test_add(self):self.assertEqual(add(2, 3), 5)self.assertEqual(add(-1, 1), 0)def test_divide(self):with self.assertRaises(ValueError):divide(10, 0)if __name__ == "__main__":unittest.main()
13. 总结
本快速回顾涵盖了Python编程的基础知识,包括:
-
基础语法:变量、数据类型、运算符、控制结构
-
数据结构:列表、元组、集合、字典
-
函数:定义、参数传递、作用域、lambda
-
文件操作:读写文本和CSV文件
-
异常处理:try-except结构
-
面向对象编程:类、继承、封装、多态
-
模块与包:导入、创建和使用
-
常用标准库:os、sys、datetime、json、random
-
进阶特性:生成器、装饰器、上下文管理器
-
最佳实践:代码风格、虚拟环境、类型提示、文档、测试
Python以其简洁的语法和强大的功能,成为最受欢迎的编程语言之一。掌握这些基础知识后,你可以继续学习特定领域的Python应用,如Web开发(Django、Flask)、数据分析(Pandas、NumPy)、机器学习(Scikit-learn、TensorFlow)等。
相关文章:
第4节:Python编程基础 - Python语法快速回顾
1. Python简介与环境配置 Python是一种高级、解释型、通用的编程语言,由Guido van Rossum于1991年首次发布。 它以简洁明了的语法和强大的功能而闻名,广泛应用于Web开发、数据分析、人工智能、科学计算等领域。 1.1 Python的特点 简单易学:…...
十四、C++速通秘籍—函数式编程
目录 上一章节: 一、引言 一、函数式编程基础 三、Lambda 表达式 作用: Lambda 表达式捕获值的方式: 注意: 四、函数对象 函数对象与普通函数对比: 五、函数适配器 1、适配普通函数 2、适配 Lambda 表达式 …...
蓝桥杯 2025 C++组 省 B 题解
可分解的正整数 算法:思维 因为可以有负数 所以除了1以外的任何数都可以构造 当这个数为x构造方法为 -(x-1) -(x-2) -(x-3) ....-1 0 1...x-3 x-2 x-1 x 除了x,x以前的数都会被负数抵消 #include <bits/stdc.h> #define ll long long ll a…...
如何让老电脑运行快些(极限榨干老电脑硬件)
要让老电脑运行更快,可以通过增加虚拟内存、优化系统设置和硬件升级等方法实现。以下是具体建议: 1. 增加虚拟内存(适合硬盘空间大的老电脑) 虚拟内存(页面文件)是硬盘上的一部分空间,用于扩展…...
博物馆小程序怎么做?从0到1打造数字化文化窗口
博物馆小程序怎么做?从0到1打造数字化文化窗口 一、行业痛点:传统博物馆的数字化困局 在数字化浪潮下,传统博物馆普遍面临三大挑战: 客流受限:线下接待能力有限,难以触达更广泛人群 互动单一…...
信息学奥赛一本通 1498:Roadblocks | 洛谷 P2865 [USACO06NOV] Roadblocks G
【题目链接】 ybt 1498:Roadblocks 洛谷 P2865 [USACO06NOV] Roadblocks G 【题目考点】 1. 图论:严格次短路径 严格次短路的路径长度必须大于最短路的路径长度。 非严格次短路的路径长度大于等于最短路的路径长度。 【解题思路】 每个交叉路口是一…...
1.5-APP的架构\微信小程序的架构
1.5-APP的架构\微信小程序的架构 APP的三种开发架构: 原生态APP类型 APP-开发架构-原生态-IDEA 演示:remusic项目源码 NP管理器: http://normalplayer.top/ HttpCanary:https://github.com/mingww64/HttpCanary-SSL-Magisk 安全影…...
【服务器端表单字符验证】
文章目录 一、实验目的二、核心代码实现三、调试关键问题四、总结 一、实验目的 掌握JSP表单验证在服务器端的实现技术,实现对用户输入字符的非空及长度为5的验证,返回对应提示信息并优化用户交互。 二、核心代码实现 前端表单 <form action"…...
【玩转全栈】—— Django 连接 vue3 保姆级教程,前后端分离式项目2025年4月最新!!!
本文基于之前的一个旅游网站,实现 Django 连接 vue3,使 vue3 能携带 CSRF Token 发送 axios 请求给后端,后端再响应数据给前端。想要源码直接滑倒底部。 目录 实现效果 解决跨域 获取 csrf-token 什么是 csrf-token ? CSRF攻击的…...
react中通过 EventEmitter 在组件间传递状态
要在 Reply 组件中通过 statusChangeEvent 发送状态值,并在 Select 组件中接收这个状态值 status,你可以按照以下步骤实现: //Event.jsimport EventEmitter from events;export const statusChangeEvent new EventEmitter();// 工单状态切换…...
数据库实验:分组查询与聚集函数的使用
目录 引言一、GROUP BY核心规则与常见错误二、高级分组选项:ROLLUP、CUBE与GROUPING SETS三、窗口函数:在原始行中显示分组聚合结果四、UNION ALL合并结果集:解决冗余查询问题五、实验体会 结语 (附上实验中表格的信息)…...
【mllm】——x64模拟htp的后端无法编译debug
mllm, qnn, x64 code:https://github.com/UbiquitousLearning/mllm 1. 问题 通过自定义qualcomm graph使用高通的htp后端进行llm推理,网络暂时只有mllm,和https://github.com/chraac/llama.cpp。qualcomm是支持x64模拟htp推理的,这样比较好d…...
计算机网络- UDP协议详解
UDP协议详解 5. UDP协议详解5.1 UDP协议基础5.1.1 UDP的基本概念5.1.2 UDP报文结构5.1.3 UDP校验和计算5.1.4 UDP在Linux内核中的实现UDP套接字的创建UDP数据的发送UDP数据的接收UDP校验和的计算 5.1.5 UDP的实际应用音视频流媒体在线游戏DNS查询VoIP通信网络时间同步 5.2 UDP编…...
Open-TeleVision源码解析——宇树摇操方案的重要参考:VR控制人形机器人采集数据
前言 本来针对Open-TeleVision的源码解析,是打算放在此文《从宇树摇操avp_teleoperate到unitree_IL_lerobot:如何基于宇树人形进行二次开发》中的,但考虑到为避免篇幅过长,故独立成此文 第一部分 Open-TeleVision的源码解析 如本…...
Embedding质量评估、空间塌缩、 Alignment Uniformity
Embedding质量的评估和空间塌缩的解决是自然语言处理(NLP)和推荐系统领域的关键问题。以下是综合多篇研究的总结: 一、Embedding质量评估方法 基准测试与任务指标 MTEB/C-MTEB:使用多语言或中文的基准测试集(如58个数据…...
[题解] Educational Codeforces Round 168 (Rated for Div. 2) E - level up
链接 思路 1 注意到在 k ∈ [ 1 , n ] k \in [1,n] k∈[1,n] 可以得到的最高等级分别为: n , n 2 , n 3 . . . . . n n n,\frac{n}{2},\frac{n}{3}.....\frac{n}{n} n,2n,3n.....nn, 总的个数是一个调和级数, s u m n ∗ ln n sumn*\ln n sumn∗lnn, 完全可以处…...
Lua 中的 table 类型详解
Lua 中的 table 类型详解 table 是 Lua 中唯一的数据结构机制,它实现了关联数组的功能,可以用来表示普通数组、序列、符号表、集合、记录、图、树等几乎所有数据结构。 基本特性 table 是 Lua 中唯一的数据结构类型可以包含任意类型的值(n…...
github进阶使用教程
目录索引 一、基本内容 repository fork star codespaces issue 在一个仓库创建话题讨论,可以由仓库主人选择开始和结束话题的讨论 pull request(也称 pr) 协同其他仓库开发,请求仓库主人拉取自己的代码合并到仓库的主分支&…...
推流265视频,网页如何支持显示265的webrtc
科技发展真快,以前在网页上(一般指谷歌浏览器),要显示265的视频流,都是很鸡肋的办法,要么转码,要么用很慢的hls,体验非常不好,而今谷歌官方最新的浏览器已经支持265的web…...
“破解”GPT-4o生图技术:万物皆可吉卜力的技术路线推测
👉目录 1 GPT-4o 的神奇魔法 2 GPT-4o 可能的技术路线推测 3 结语 最近 GPT-4o 生图模型横空出世,效果和玩法上都有突破性的进展,笔者整理了一下目前相关的技术,抛砖引玉一下,希望有更多大神分享讨论。 图源小红书恶魔…...
基于SpringBoot的电影订票系统(源码+数据库+万字文档+ppt)
504基于SpringBoot的电影订票系统,系统包含两种角色:管理员、用户主要功能如下。 【用户功能】 首页:浏览系统电影动态。 资讯信息:获取有关电影行业的新闻和资讯。 电影信息:查看电影的详细信息和排片情况。 公告信…...
07-算法打卡-链表-移除链表-leetcode(203)-第七天
1 题目地址 203. 移除链表元素 - 力扣(LeetCode)203. 移除链表元素 - 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1:[https://assets.leetc…...
[C++面试] 初始化相关面试点深究
一、入门 1、C中基础类型的初始化方式有哪些?请举例说明 默认初始化 对于全局变量和静态变量,基础类型(如int、float、double等)会被初始化为 0;而对于局部变量,其值是未定义的,包含随机…...
在线地图支持天地图和腾讯地图,仪表板和数据大屏支持发布功能,DataEase开源BI工具v2.10.7 LTS版本发布
2025年4月11日,人人可用的开源BI工具DataEase正式发布v2.10.7 LTS版本。 这一版本的功能变动包括:数据源方面,Oracle数据源支持获取和查询物化视图;图表方面,在线地图支持天地图、腾讯地图;新增子弹图&…...
粉末冶金齿轮学习笔记分享
有一段小段时间没有更新了,不知道小伙们有没有忘记我。最近总听到粉末冶金齿轮这个概念,花点时间来学习一下,总结一篇笔记分享给大家。废话不多说,直接开始: “粉末冶金”是一种制造工艺,包括在高压下压实…...
Retina:部署在神经硬件的SNN眼动追踪算法
论文链接:Retina : Low-Power Eye Tracking with Event Camera and Spiking Hardware 这是一篇发表在2024CVPRW上的文章,做了三个contribution: 将SNN放在Eye Tracking任务上。提出了Ini-30数据集部署到了Spike硬件上 还是挺有趣的。但是由于…...
OCR API识别对比
OCR 识别DEMO OCR识别 demo 文档由来 最开始想使用百度开源的 paddlepaddle大模型 研究了几天,发现表格识别会跨行,手写识别的也不很准确。最终还是得使用现成提供的api。。 文档说明 三个体验下来 腾讯的识别度比较高,不论是手写还是识别表…...
nodejs构建项目
从零到一搭建 Node.js 框架 搭建一个 Node.js 框架是理解 Web 应用架构的绝佳方式。本指南将带您完成创建一个轻量级但功能完善的 Node.js 框架的全过程,类似于 Express 或 Koa,但规模更小,便于理解。 目录 项目初始化创建核心应用类路由系…...
flutter 桌面应用之右键菜单
在 Flutter 桌面应用开发中,context_menu 和 contextual_menu 是两款常用的右键菜单插件,各有特色。以下是对它们的对比分析: context_menu 集成方式:通过 ContextMenuArea 组件包裹目标组件,定义菜单项。掘金…...
Cygwin编译安装Acise
本文记录Windows下使用Cygwin编译安装Acise的流程。 零、环境 操作系统Windows11Visual Studio CodeVisual Studio Code 1.92.0Cygwin 一、工具及依赖 1.1 Visual Studio Code 下载并安装Visual Studio Code, 同时安装以下插件, Task Explorer Output Colorizer …...
