news 2026/4/21 19:32:24

python3语法学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python3语法学习

变量定义

left, right = 0, len(nums) - 1

变量运算

运算符描述示例 (a=10, b=3)

/除(结果始终为浮点数)a / b3.3333...

%取模(返回余数)a % b1

**幂运算(指数)a ** b1000

//整除(向下取整)a // b3

range:

1. 语法格式

range共有三种调用方式:

  1. range(stop):生成从 0 开始、到stop结束(不包含stop)的序列。

  2. range(start, stop):生成从start开始、到stop结束(不包含stop)的序列。

  3. 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. 基本语法结构
def 函数名(参数1: 类型, 参数2: 类型 = 默认值) -> 返回类型: """ 这里是文档字符串(Docstring),描述函数的功能。 """ # 逻辑代码 结果 = 参数1 + 参数2 return 结果
2. 核心语法要点
  • def关键字:声明开始定义函数。

  • 参数 (Arguments)

    • 位置参数:调用时按顺序传入。

    • 默认参数:如参数2: 类型 = 默认值,如果调用时不传,就用默认值。

  • 类型注解 (Type Hints):如: int-> float,这不是强制的,但在工程中能极大提高代码可读性,防止传错数据。

  • 返回类型也是不一定有的,因为有些函数不一定需要return

  • 返回值 (return):函数执行完后交出的“果实”。如果没有写return,函数默认返回None

3. 示例:相机内参转换函数
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. 基本语法结构
class 类名: def __init__(self, 初始参数): """ 构造方法:创建对象时自动执行,用于给对象“贴标签”(初始化属性)。 """ self.属性1 = 初始参数 def 方法名(self, 其他参数): """ 实例方法:第一个参数必须是 self。 """ # 可以通过 self 访问类内部的属性 return self.属性1 + 其他参数
2. 核心语法要点
  • __init__方法:它是类的“初始化办公室”。你希望这个类一诞生就拥有的数据(如机械臂 IP、模型路径),都放在这里。

  • self参数(极其重要)

    • 它代表实例化的那个对象本身

    • 你可以把它想象成“我的”。self.ip就是“我的 IP”。

    • 在类内部的所有函数(方法)中,第一个参数都必须是self,这样它们才能互相沟通数据。

  • 实例化:类只是图纸,bot = RobotControl()才是根据图纸盖出来的房子。

3. 示例:机械臂控制类
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()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 18:17:31

Git Commit签署密钥保护GLM-4.6V-Flash-WEB代码完整性

Git Commit签署密钥保护GLM-4.6V-Flash-WEB代码完整性 在人工智能模型加速迭代的今天,开源项目已成为推动技术进步的核心动力。然而,随着像 GLM-4.6V-Flash-WEB 这类多模态视觉语言模型广泛通过 Git 平台分发,一个隐忧正日益凸显:…

作者头像 李华
网站建设 2026/4/19 1:39:39

GitHub镜像网站提供GLM-4.6V-Flash-WEB国内高速下载链接

GLM-4.6V-Flash-WEB:轻量级多模态模型的国产落地新范式 在智能客服自动识别用户截图、电商平台理解商品详情图、教育App解析手写作答照片的今天,视觉语言模型(VLM)早已不再是实验室里的前沿玩具,而是真正走向生产环境的…

作者头像 李华
网站建设 2026/4/20 7:14:12

Dify描述生成限制背后的逻辑,99%用户不知道的3个隐藏机制

第一章:Dify描述生成限制的基本概念Dify 是一个面向 AI 应用开发的低代码平台,支持通过自然语言描述快速生成应用逻辑。在使用 Dify 进行描述生成时,系统对输入内容存在一定的限制机制,以确保生成结果的准确性与安全性。输入长度限…

作者头像 李华
网站建设 2026/4/18 4:00:48

数据可视化实战:使用Python与Pyecharts深度解析在线教育学习行为

数据可视化实战:使用Python与Pyecharts深度解析在线教育学习行为 通过一个真实的教育数据分析案例,展示如何将枯燥的数据转化为生动的故事,这不仅是技术实践,更是思维方式的转变。 在这学期的《数据可视化》课程中,我最…

作者头像 李华
网站建设 2026/4/20 12:23:07

鹅厂二面:王者荣耀亿级排行榜,怎么设计?

前言分享一道网上很火的腾讯面试题:亿级用户排行榜怎么设计呢?换种说法,王者荣耀亿级排行榜,如何设计?本文跟大家一起探讨一下,如何回答更好呢?数据库的order by为什么不行?为什么Redis是排行榜…

作者头像 李华
网站建设 2026/4/17 18:32:59

同步 vs 异步性能差10倍!SpringBoot 高吞吐接口实现终极方案

前言Servlet 3.0之前:每一次Http请求都由一个线程从头到尾处理。Servlet 3.0之后,提供了异步处理请求:可以先释放容器分配给请求的线程与相关资源,减轻系统负担,从而增加服务的吞吐量。在springboot应用中,…

作者头像 李华