python的可选择起点顺序执行

 

提出需求:由输入的参数决定程序开始执行的位置,并执行至结束

场景demo:一个包含了以下步骤的图像处理函数,

step0:相机采图

step1:灰度转换

step2:二值转换

step3:查找轮廓

step4:计数运算

假设已经运行过一次上述的图像处理函数,但是对结果不满意,对二值转换的参数进行了微调,那么就只需要从step2开始再执行一次即可,而无需从step0开始。

以下是几种实现的方法:

 使用判断语句


def function(step):if step == 0:print('step0 do something')step += 1if step == 1:print('step1 do something')step += 1if step == 2:print('step2 do something')step += 1if step == 3:print('step3 do something')step += 1if step == 4:print('step4 do something')step += 1if step == 5:print('step5 do something')step += 1function(0)
function(3)

 还可以加入判断,实现复杂一些的功能


def function(step, a):if step == 0:print('step0 do something')step += 1if step == 1:print('step1 do something')step += 1if step == 2:print('step2 do something')if a > 100:step += 2else:step += 1if step == 3:print('step3 do something')step += 1if step == 4:print('step4 do something')step += 1if step == 5:print('step5 do something')step += 1function(0, 10)
function(1, 101)

以下来自WeTab AI Pro的其他方法

使用定义函数

def function(entry_num):def step0():print("Executing step0 event")def step1():print("Executing step1 event")def step2():print("Executing step2 event")def step3():print("Executing step3 event")def step4():print("Executing step4 event")def step5():print("Executing step5 event")steps = [step0, step1, step2, step3, step4, step5]for i in range(entry_num, len(steps)):steps[i]()# 测试
function(0)  # 从step0事件顺序执行到step5事件
function(1)  # 从step1事件顺序执行到step5事件
function(2)  # 从step2事件顺序执行到step5事件
function(3)  # 从step3事件顺序执行到step5事件
function(4)  # 从step4事件顺序执行到step5事件
function(5)  # 执行step5事件

再多些demo

好的,这里提供更多的示例代码,展示不同的方法实现相同的功能:

使用类和方法

class StepExecutor:def __init__(self):self.steps = [self.step0,self.step1,self.step2,self.step3,self.step4,self.step5]def step0(self):print("Executing step0 event")def step1(self):print("Executing step1 event")def step2(self):print("Executing step2 event")def step3(self):print("Executing step3 event")def step4(self):print("Executing step4 event")def step5(self):print("Executing step5 event")def execute_steps(self, entry_num):for i in range(entry_num, len(self.steps)):self.steps[i]()# 测试
executor = StepExecutor()
executor.execute_steps(0)
executor.execute_steps(1)
executor.execute_steps(2)
executor.execute_steps(3)
executor.execute_steps(4)
executor.execute_steps(5)

使用装饰器

def step_decorator(step_num):def decorator(func):def wrapper():print(f"Executing step{step_num} event")func()return wrapperreturn decorator@step_decorator(0)
def step0():pass@step_decorator(1)
def step1():pass@step_decorator(2)
def step2():pass@step_decorator(3)
def step3():pass@step_decorator(4)
def step4():pass@step_decorator(5)
def step5():passsteps = [step0, step1, step2, step3, step4, step5]def function(entry_num):for i in range(entry_num, len(steps)):steps[i]()# 测试
function(0)
function(1)
function(2)
function(3)
function(4)
function(5)

这些示例展示了各种不同的实现方式,你可以根据具体需求选择最适合你的方法。若有进一步问题或需求,请告知!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php反序列化初步了解

一、定义 序列化(串行化):将变量转换为可保存或传输的字符串的过程(通常是字节流、JSON、XML格式) 反序列比(反串行化):把这个字符串再转化成原始数据结构或对象(原来的…

长安链使用Golang编写智能合约教程(一)

长安链是分2.1.和2.3.两个版本,本节面说的是2.1.的版本 需要2.3.版本的合约,请看教程(二)! 教程(二)我会写如何查历史数据 教程二:(长安链2.3.的版本的智能合约编写&…

在WHM中如何调整max_post_size参数大小

今日我们在搭建新网站时需要调整一下PHP参数max_post_size 的大小,我们公司使用的Hostease的美国独立服务器产品默认5个IP地址,也购买了cPanel面板,因此联系Hostease的技术支持,寻求帮助了解到如何在WHM中调整PHP参数,…

反转!Greenplum 还在,快去 Fork 源码

↑ 关注“少安事务所”公众号,欢迎⭐收藏,不错过精彩内容~ 今早被一条消息刷爆群聊,看到知名开源数仓 Greenplum 的源码仓“删库跑路”了。 要知道 GP 新东家 Broadcom 前几日才刚刚免费开放了 VMware Workstation PRO 17 和 VMware Fusion P…

linux系统的逻辑卷管理及磁盘配额

目录 逻辑卷管理 磁盘配额 逻辑卷管理 lvm:logical volume manager 逻辑卷管理 linux系统下对硬盘分区的一种管理机制。 lvm机制特别适合于管理大存储设备,可以动态的对硬盘进行扩容。 逻辑上的磁盘,概念上的磁盘&a…

QTP——功能测试

一、前言(课设目的及内容) QTP是quicktest Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试&…

RedissonClient的配置解析

RedissonClient 的默认配置旨在提供一种平衡性能和资源消耗的合理基础配置,适用于大多数应用场景。了解并适当调整这些默认值可以更好地满足特定应用需求。 默认配置解析 在默认情况下,Redisson 使用的连接池配置和连接管理参数如下: 连接池…

python基础-内置常量

文章目录 内置常量FalseTrueNoneNotImplementedEllipsis\_\_debug\_\_ 命令行界面 内置常量 在 Python 的内置命名空间中存在一些常量,它们具有特定的含义和用途。让我们一起来了解一下这些常量: False False 是 bool 类型的假值。它在逻辑运算中通常…

机器学习之二分类提升决策树(Two-class Boosted Decision Tree)

二分类提升决策树(Two-class Boosted Decision Tree)是一种常用的机器学习方法,主要用于分类任务。该方法结合了决策树模型和提升(boosting)算法的优点,通过多个弱分类器(通常是简单的决策树)来构建一个强分类器。下面是关于二分类提升决策树的主要概念和工作流程: 1…

五个超级好用的Prompt网站,让你的GPT效率碾压旁人!

五个超级好用的Prompt网站,让你的GPT效率碾压旁人! 1. 150 Best ChatGPT Prompts for All Kinds of Workflow 该网站包含了150个能够显著提升工作流程效率的ChatGPT Prompt。从制作引人入胜的内容到简化项目,这些提示应该有助于将 ChatGPT …

【Python】解决Python报错:IndentationError: expected an indented block

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

基于51单片机的酒精浓度检测仪的设计

一.硬件方案 硬件部分为利用MQ3气敏传感器测量空气中酒精浓度,并转换为电压信号,经A/D转换器转换成数字信号后传给单片机系统,由单片机及其相应外围电路进行信号的处理,显示酒精浓度值以及超阈值声光报警。电路主要由51单片机最小…

项目运行mysql语言

前置 注意vs中要引用mysql的类库。 MySqlCommand MySqlCommand类代表了要在MySQL数据库上执行的SQL语句或存储过程。提供了许多方法来执行不同类型的SQL命令,比如查询(SELECT)、插入(INSERT)、更新(UPDA…

【刷题(13)】二分查找

一、二分查找基础 &#xff08;1&#xff09;int mid ((right - left) >> 1) left; &#xff08;2&#xff09;lower_bound的底层实现 int lower_bound(vector<int>& nums, int x) {int left 0;int right nums.size() - 1;// 区间为 左闭右闭while (lef…

基于python实现生命游戏

文章目录 一、生命游戏是什么二、生命游戏规则解释1.相邻细胞2.细胞状态 三、代码实现1.邻居细胞2.更新状态 四、整体代码 一、生命游戏是什么 生命游戏&#xff08;Game of Life&#xff09;是由英国数学家约翰何顿康威在1970年发明的一种细胞自动机&#xff08;Cellular Aut…

基于iptables 实现 ip 黑名单、白名单

1. 创建端口集合、黑名单ip集合、白名单ip 集合 2. 首次访问非正确的端口&#xff0c;即认为是黑名单ip 3. 若是黑名单ip 且不是白名单ip drop 4. 通过本次请求 标记为白名单ip ## 设置黑名单 ip ipset create scanner-ip-set hash:ip## 设置白名单 ipset create white-ip-s…

(超详细)字符函数和字符串函数【上】

前言 C 语言中对字符和字符串的处理很是频繁&#xff0c;但是 C 语言本身是没有字符串类型的&#xff0c;字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数 . 1.求字符串长度函数 strlen函数 我们要求一个字符串函数的长度…

Firefox国际版

Firefox国际版官方网址&#xff1a; Download the Firefox Browser in English (US) and more than 90 other languagesEveryone deserves access to the internet — your language should never be a barrier. That’s why — with the help of dedicated volunteers around…

C语言序列化和反序列化--TPL(一)

TPL TPL说明网站 C语言中高效的序列化 您可以使用tpl快速轻松地存储和重新加载C数据。Tpl是一个用于序列化C数据的库。数据以自然二进制形式存储。该API很小&#xff0c;并试图保持“不碍事”。Tpl可以序列化许多C数据类型&#xff0c;包括结构。Tpl与文件、内存缓冲区和文件…

使用cmd下载远程服务器的文件

直接上命令&#xff1a; scp root192.168.40.99:/home/nest/xc/…/img_return.png ./ 其中&#xff0c;root为username&#xff0c;后面为服务器地址&#xff0c;文件地址&#xff0c;./为下载到当前目录下