说明

对于调用成功一个函数,立即调用另一个函数的应用。例如从数据库获取了一批数据,将某些结果回写的过程。

内容

假设有两个函数,写成了不定参格式,这样比较通用。
hello

def hello(*args, **kwargs):a = args b = kwargsprint('hello')print(a)print(b)return True
---
In [12]: hello()
hello
()
{}
Out[12]: True

world

def world(*args, **kwargs):a = args b = kwargsprint('world')print(a)print(b)return True

我们希望调用hello成功后立即调用world

'''
一个函数成功时,执行另一个函数函数返回遵从三值逻辑:True(1), False(0), None (-1)
'''
import time
class FlipFlop:status = None msg = None flip_duration = None flop_duration = None flip_res = None flop_res = None def __init__(self, name):self.name = name self.start_ts = int(time.time()* 1000)# 前一个函数def flip(self, func, *args, **kwargs):self.flip = func self.flip_args = args self.flip_kwargs = kwargsreturn True # 后一个函数def flop(self, func,*args, **kwargs):self.flop = funcself.flop_args = args self.flop_kwargs = kwargsreturn True # 根据参数跑函数@staticmethoddef run_func(func, *args, **kwargs):# 既有关键字又有位置参数if args and kwargs:return func(*args, **kwargs)# 没有关键字if args and (not kwargs):return func(*args)# 没有位置参数if kwargs and (not args):return func(**kwargs)# 无参return func()# 联合执行def flipflop(self):self.flip_res  = FlipFlop.run_func(self.flip, *self.flip_args, **self.flip_kwargs)if self.flip_res:self.flip_duration = int(time.time()* 1000) - self.start_tsself.msg = 'flip done'self.flop_res = FlipFlop.run_func(self.flop, *self.flop_args, **self.flop_kwargs)self.flop_duration = int(time.time()* 1000) - self.start_ts - self.flip_durationif self.flip_res and self.flop_res:self.status = True self.msg = 'ok'return True else:self.status = False if self.flip_res:self.msg = 'flop fail'else:self.msg = 'flip & flop both fail'return False# 转化为字典def to_dict(self):return dict(self)# 字典的键def keys(self):return ('name','status', 'msg', 'start_ts','flip_duration','flop_duration','flip_res', 'flop_res')# 字典的值def __getitem__(self, item):return getattr(self, item) def hello(*args, **kwargs):a = args b = kwargsprint('hello')print(a)print(b)return True def world(*args, **kwargs):a = args b = kwargsprint('world')print(a)print(b)return True

示例如下

# 定义
test = FlipFlop('test')test.flip(hello, 'a', b=1)
test.flop(world, b=2)

调用

test.flipflop()
--
In [14]: test.flipflop()
hello
('a',)
{'b': 1}
world
()
{'b': 2}
Out[14]: True

结果

test.to_dict()
---
Out[13]:
{'name': 'test','status': True,'msg': 'ok','start_ts': 1617675584330,'flip_duration': 0,'flop_duration': 0,'flip_res': True,'flop_res': True}

Python一些可能用的到的函数系列37flipflop 对象相关推荐

  1. Python一些可能用的到的函数系列11 本地哈希和服务器哈希比对

    说明 摘要可以作为文件的唯一识别和信息验证,在进行大量存储时是很有比较的. 内容 以前不太清楚哪里出过错,感觉服务器上计算hash和本地不一致. 由于python的hashlib是对二进制文本进行计算 ...

  2. Python一些可能用的到的函数系列76 最大回撤率

    说明 这个问题其实有点绕,写在这里备忘吧. 内容 最大回撤:从任何一个峰值向后的最大落差. 两个要点: 1 找峰值 2 从峰值往后看,找到最大落差 最后取所有峰值的最大值就是最大回撤. 如下一个数列, ...

  3. Python一些可能用的到的函数系列102 推断df的变量类型

    说明 这个主要是为了在sql里快速建表 内容 对每列的变量进行遍历,去掉空之后进行简单的判定.数值(double.float和date)的数据长度是固定的,变化比较大的是字符型.我觉得可以采用最大最小 ...

  4. Python一些可能用的到的函数系列81 基于Redis Stream的简单消息队列对象

    说明 一个实现消息队列简单管理的对象 内容 代码 import redis # 基于Redis Stream的消息队列 class LittleRQ:def __init__(self, host, ...

  5. Python一些可能用的到的函数系列28 超大文本文件分割读取

    说明 有时候会有一些特别大的文本文件需要拆分处理 内容 1 曾经用过的笨办法 1.1 读取大文件的末尾n行 # 采用偏置方法读取末尾三百行文本 def read_tail_n(fname, n_lin ...

  6. python中读取文件过程中seek()函数的使用

    python中读取文件过程中seek()函数的使用 目录 概述: 语法: 参数: 返回值: 实例: 概述: seek() 方法用于移动文件读取指针到指定位置. 语法: seek() 方法语法如下: 文 ...

  7. python使用statsmodels包中的tsaplots函数和lags参数可视化时间序列数据指定滞后位置个数(级别)以前的所有自相关性(plot the autocorrelation)

    python使用statsmodels包中的tsaplots函数和lags参数可视化时间序列数据指定滞后位置个数(级别)以前的所有自相关性(plot the autocorrelation Funct ...

  8. python使用matplotlib可视化雷达图(polar函数可视化雷达图、极坐标图、通过径向方向来显示数据之间的关系)

    python使用matplotlib可视化雷达图(polar函数可视化雷达图.极坐标图.通过径向方向来显示数据之间的关系) 目录

  9. python使用matplotlib可视化、使用subplots函数将可视化的画布划分为网格状的若干子区、通过nrows和ncols参数设置设置行数和列数

    python使用matplotlib可视化.使用subplots函数将可视化的画布划分为网格状的若干子区.通过nrows和ncols参数设置设置行数和列数 目录

最新文章

  1. python3 subprocess.check_output 执行shell命令 返回结果
  2. Android智能指针
  3. Bellman-Ford 算法 和 动态规划
  4. bit索引 mysql_Mysql优化之索引实现原理
  5. 文本文件与二进制文件
  6. pcie usb3.0 驱动 for linux_Linux 中的虚拟网络
  7. php coder pro 调试,为PHP开发者准备的12个调试工具,php开发者调试工具_PHP教程
  8. (七)数字后端之形式验证
  9. Win11更改用户文件夹名
  10. oracle 启动与停止工作,win7出现已停止工作如ie已停止工作、word停止工作等等
  11. 在线机器学习Topic推荐-AMiner
  12. python爬取王者荣耀英雄素材图案例
  13. python报错:SyntaxError: Missing parentheses in call to ‘exec‘
  14. Clipboard.js 实现点击复制
  15. python定义一个有长度的列表
  16. form-data和x-www-form-urlencoded的区别和延伸
  17. Ubuntu 蓝屏拯救
  18. 第二章 信息系统服务管理
  19. android--多点触控的实现
  20. 推荐9个最顶级的IT公众号

热门文章

  1. Linux内核源码组织结构
  2. FME高性能编程,让你的FME快起来
  3. ROOT(a Data analysis Framework)-Note6: iSTEP day3-Random
  4. iPhone SDK 包含哪些东西?
  5. Python123 期末题库
  6. Linux里面的oa环境是什么,Linux下oa环境搭建
  7. 报错Warning: ReactDOM.render is no longer supported in React 18.Use createRoot instead.Until you...
  8. WebRTC 教程四: WebRTC聊天室设计和搭建
  9. 设计模式01-设计模式中的七大原则
  10. 日本电产尼得科Nidec研发出超薄直线振动马达