python退出的操作,搜索后都是return、exit()等
return:退出一个方法,并返回一个值
exit():退出python
想要实现的功能:
方法A中调用多个方法,方法B、方法C...,方法B有一个开关,是否结束方法A。如果标记结束就直接退出方法A,继续执行其他的方法。
总的过程如下:
print(“执行A之前的方法")
def A():
B(isfinished=“true")
C()
print(“方法A结束了,但是这句还要执行")
问题:
可以这么实现:
print(“执行A之前的方法")
def A():
B()
return
C()
print(“方法A结束了,但是这句还要执行")
或者这么实现:
print(“执行A之前的方法")
def A():
B(isfinished=“true")
if isfinished==“true”:
return
C()
print(“方法A结束了,但是这句还要执行")
但是第一种需要每次都手动改代码,第二种方法要加很多冗余代码(我有很多方法需要用isfinished来做开关),但是我只想通过开关isfinished来判断是否退出A()
解决方法:
通过B()中抛出一个异常,然后提前结束方法A
第一步:自定义一个异常,继承Exception即可
class FinishedException(Exception):
def __init__(self,value):
self.value=value
(如果不用记录参数,就不需要写value等)
第二步:通过raise抛出异常,外层方法catch住这个异常即可
try:
raise FinishedException(“这个方法给出异常")
except FinishedException as e:
print(e)
第三步:通过装饰器统一对异常进行处理,简化代码
def wrapper(func):
def _func(*args):
try:
func(*args)
except FinishedException as e:
print("[",e,"]为最后一个要执行的case,不执行接下来的操作,退出当前流程")
except Exception as e:
print("用例出错:",e)
return _func
def wrapper_basecase(isfinished=“false")
def _func(*args):
if isfinished == "true":
raise FinishedException(name)
使用装饰器+异常的例子:
@wrapper
defA(driver,iteration=2):
@wrapper_basecase(isfinished="true")
def B():
return xxx
B()
sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO
sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO 今天在弄一个 sqlalchemy 的数据库基类的时候,遇到了跟多继承相关的一个小问题,因此顺便看了一 ...
python获取命令行参数的方法(汇总)
介绍python获取命令行参数的方法:getopt模和argparse模块. python版本:2.7 一.getopt模块 主要用到了模块中的函数: options, args = getopt.g ...
Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究
Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究 一丶反射 什么是反射: 反射的概念是由Smith在1982年首次提出的 ...
Python列表,元组,字典,字符串方法笔记
01. 列表 1.1 列表的定义 List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组 专门用于存储 一串 信息 列表用 [] 定义,数据 之间使用 , 分隔 列 ...
【转】C#中WinForm程序退出方法技巧总结
C#中WinForm程序退出方法技巧总结 一.关闭窗体 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.Ex ...
用 Python 排序数据的多种方法
用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭 ...
Android经典完美退出方法
Android经典完美退出方法,使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activit ...
C#中WinForm程序退出方法技巧总结(转)
本文实例总结了C#中WinForm程序退出方法技巧.分享给大家供大家参考.具体分析如下: 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit ...
python子类调用父类的方法
python子类调用父类的方法 python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问, ...
随机推荐
43. Multiply Strings
/** * @param {string} num1 * @param {string} num2 * @return {string} */ var multiply = function(num1 ...
学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇
0.环境 硬件环境见上一篇博客:学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境 OpenStack网络配置:一个tenant, 2个虚机 Type drive ...
Spring之ResourceLoader加载资源
Resource与ResourceLoader对比 1.Resource接口定义了应用访问底层资源的能力. 通过FileSystemResource以文件系统绝对路径的方式进行访问: 通过ClassP ...
(四)C语言柔性数组、指针赋值
一.柔性数组 今天看了公司的代码,发现一个很奇怪的问题,后来自己写了类似代码,我先把代码贴出来吧. #include #include # ...
hashtable用法
import java.util.Hashtable; public class HashTable { public static void main (String[] args) { Hasht ...
lex&;yacc6 ---error
类的检测 http://blog.csdn.net/pandaxcl/article/details/1536784
【COCOS2DX-游戏开发之三四】cocos2dx 3.0 TableView特殊使用方法:滚动时不能选择等等
cocos2dx 3.0版本号TableView拍生自ScrollView,经常使用来做滚动列表,有几种特殊使用方法,不知道大家用到过没 要求:1.滚动时不能选中TableCell,非滚动状态才干选中 ...
python伪装浏览器爬虫
待完善 import urllib2,urllib,cookielib urllib.getproxies_registry=lambda:{} request=urllib2.Request(&qu ...
CodeForces-2015 HIAST Collegiate Programming Contest-Gym-100952A-Who is the winner?
A. Who is the winner? time limit per test 1 second memory limit per test 64 megabytes input standard ...
Javascript实现继承
以下转自阮一峰的文章:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance_continued.h ...