变量定义
left, right = 0, len(nums) - 1
变量运算
运算符描述示例 (a=10, b=3)
/除(结果始终为浮点数)a / b3.3333...
%取模(返回余数)a % b1
**幂运算(指数)a ** b 1000
//整除(向下取整)a // b3
range:
1. 语法格式
range 共有三种调用方式:
-
range(stop):生成从 0 开始、到stop结束(不包含stop)的序列。 -
range(start, stop):生成从start开始、到stop结束(不包含stop)的序列。 -
range(start, stop, step):生成从start开始、到stop结束、步长为step的序列。
2. 参数说明
-
start(可选):序列的起始数值,默认为 0。 -
stop(必选):序列的终止数值。注意:生成的序列不包括这个值。 -
step(可选):步长,即相邻两个数之间的间隔,默认为 1。
3. 代码示例
示例 C:指定步长(三参数)
for i in range(0, 10, 2):
print(i)
# 输出:0, 2, 4, 6, 8
示例 D:递减序列(负步长)
for i in range(5, 0, -1):
print(i)
# 输出:5, 4, 3, 2, 1
💡 进阶小知识
- 内存优化 :在 Python 3 中,
range()返回的是一个"迭代对象"(Iterator),它不会在内存中真的创建一个包含所有数字的列表,而是在循环到哪一步时才计算出哪一个数。这使得它处理极大的范围(如range(1000000))时非常节省内存。
函数(Function):代码的逻辑单元
1. 基本语法结构
python
def 函数名(参数1: 类型, 参数2: 类型 = 默认值) -> 返回类型:
"""
这里是文档字符串(Docstring),描述函数的功能。
"""
# 逻辑代码
结果 = 参数1 + 参数2
return 结果
2. 核心语法要点
-
def关键字:声明开始定义函数。 -
参数 (Arguments):
-
位置参数:调用时按顺序传入。
-
默认参数 :如
参数2: 类型 = 默认值,如果调用时不传,就用默认值。
-
-
类型注解 (Type Hints) :如
: int或-> float,这不是强制的,但在工程中能极大提高代码可读性,防止传错数据。 -
返回类型也是不一定有的,因为有些函数不一定需要return
-
返回值 (
return) :函数执行完后交出的"果实"。如果没有写return,函数默认返回None。
3. 示例:相机内参转换函数
python
def convert_pixel_to_mm(pixel_coord: int, focal_length: float, depth: float) -> float:
"""
根据小孔成像原理将像素坐标转换为物理毫米坐标
"""
if focal_length == 0:
return 0.0
# 公式:真实距离 = (像素偏移 * 深度) / 焦距
mm_coord = (pixel_coord * depth) / focal_length
return mm_coord
# 调用函数
x_mm = convert_pixel_to_mm(320, 600.02, 0.5)
print(f"转换后的物理坐标为: {x_mm} mm")
类(Class):对象的蓝图
类是一种更高级的组织形式。它把**数据(属性)和处理数据的函数(方法)**打包在一起。
1. 基本语法结构
python
class 类名:
def __init__(self, 初始参数):
"""
构造方法:创建对象时自动执行,用于给对象"贴标签"(初始化属性)。
"""
self.属性1 = 初始参数
def 方法名(self, 其他参数):
"""
实例方法:第一个参数必须是 self。
"""
# 可以通过 self 访问类内部的属性
return self.属性1 + 其他参数
2. 核心语法要点
-
__init__方法:它是类的"初始化办公室"。你希望这个类一诞生就拥有的数据(如机械臂 IP、模型路径),都放在这里。 -
self参数(极其重要):-
它代表实例化的那个对象本身。
-
你可以把它想象成"我的"。
self.ip就是"我的 IP"。 -
在类内部的所有函数(方法)中,第一个参数都必须是
self,这样它们才能互相沟通数据。
-
-
实例化 :类只是图纸,
bot = RobotControl()才是根据图纸盖出来的房子。
3. 示例:机械臂控制类
python
class ArmHandler:
def __init__(self, ip_address: str, home_pos: list):
"""初始化机械臂的连接信息和安全位置"""
self.ip = ip_address
self.home_joints = home_pos
self.is_connected = False
print(f"系统:已记录机械臂 {self.ip} 的配置")
def connect(self):
"""模拟连接机械臂"""
# 这里会写具体的 SDK 连接代码
self.is_connected = True
print(f"系统:成功连接到 {self.ip}")
def move_to_safe(self):
"""将机械臂移动到预设的安全位置"""
if self.is_connected:
print(f"动作:正在移动到 Home 点 {self.home_joints}")
else:
print("错误:机械臂未连接,无法移动")
# 使用类
# 1. 实例化
my_bot = ArmHandler("192.168.0.10", [0, -45, 90, 0, 0, 0])
# 2. 调用方法
my_bot.connect()
my_bot.move_to_safe()
三、 类与函数的区别与协作
| 特性 | 函数 (Function) | 类 (Class) |
|---|---|---|
| 本质 | 一个工具/动作 | 一个实体/管理者 |
| 状态保存 | 执行完就销毁,不记得上次发生了什么 | 属性会一直保存,直到对象被销毁 |
| 主要用途 | 纯逻辑计算(如坐标转换、数学公式) | 复杂的设备管理(如相机、机械臂、AI模块) |
| 调用方式 | 直接调用 func() |
先实例化 obj = Class(),再调用 obj.method() |