Python一些可能用的到的函数系列37flipflop 对象
说明
对于调用成功一个函数,立即调用另一个函数的应用。例如从数据库获取了一批数据,将某些结果回写的过程。
内容
假设有两个函数,写成了不定参格式,这样比较通用。
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 对象相关推荐
- Python一些可能用的到的函数系列11 本地哈希和服务器哈希比对
说明 摘要可以作为文件的唯一识别和信息验证,在进行大量存储时是很有比较的. 内容 以前不太清楚哪里出过错,感觉服务器上计算hash和本地不一致. 由于python的hashlib是对二进制文本进行计算 ...
- Python一些可能用的到的函数系列76 最大回撤率
说明 这个问题其实有点绕,写在这里备忘吧. 内容 最大回撤:从任何一个峰值向后的最大落差. 两个要点: 1 找峰值 2 从峰值往后看,找到最大落差 最后取所有峰值的最大值就是最大回撤. 如下一个数列, ...
- Python一些可能用的到的函数系列102 推断df的变量类型
说明 这个主要是为了在sql里快速建表 内容 对每列的变量进行遍历,去掉空之后进行简单的判定.数值(double.float和date)的数据长度是固定的,变化比较大的是字符型.我觉得可以采用最大最小 ...
- Python一些可能用的到的函数系列81 基于Redis Stream的简单消息队列对象
说明 一个实现消息队列简单管理的对象 内容 代码 import redis # 基于Redis Stream的消息队列 class LittleRQ:def __init__(self, host, ...
- Python一些可能用的到的函数系列28 超大文本文件分割读取
说明 有时候会有一些特别大的文本文件需要拆分处理 内容 1 曾经用过的笨办法 1.1 读取大文件的末尾n行 # 采用偏置方法读取末尾三百行文本 def read_tail_n(fname, n_lin ...
- python中读取文件过程中seek()函数的使用
python中读取文件过程中seek()函数的使用 目录 概述: 语法: 参数: 返回值: 实例: 概述: seek() 方法用于移动文件读取指针到指定位置. 语法: seek() 方法语法如下: 文 ...
- python使用statsmodels包中的tsaplots函数和lags参数可视化时间序列数据指定滞后位置个数(级别)以前的所有自相关性(plot the autocorrelation)
python使用statsmodels包中的tsaplots函数和lags参数可视化时间序列数据指定滞后位置个数(级别)以前的所有自相关性(plot the autocorrelation Funct ...
- python使用matplotlib可视化雷达图(polar函数可视化雷达图、极坐标图、通过径向方向来显示数据之间的关系)
python使用matplotlib可视化雷达图(polar函数可视化雷达图.极坐标图.通过径向方向来显示数据之间的关系) 目录
- python使用matplotlib可视化、使用subplots函数将可视化的画布划分为网格状的若干子区、通过nrows和ncols参数设置设置行数和列数
python使用matplotlib可视化.使用subplots函数将可视化的画布划分为网格状的若干子区.通过nrows和ncols参数设置设置行数和列数 目录
最新文章
- python3 subprocess.check_output 执行shell命令 返回结果
- Android智能指针
- Bellman-Ford 算法 和 动态规划
- bit索引 mysql_Mysql优化之索引实现原理
- 文本文件与二进制文件
- pcie usb3.0 驱动 for linux_Linux 中的虚拟网络
- php coder pro 调试,为PHP开发者准备的12个调试工具,php开发者调试工具_PHP教程
- (七)数字后端之形式验证
- Win11更改用户文件夹名
- oracle 启动与停止工作,win7出现已停止工作如ie已停止工作、word停止工作等等
- 在线机器学习Topic推荐-AMiner
- python爬取王者荣耀英雄素材图案例
- python报错:SyntaxError: Missing parentheses in call to ‘exec‘
- Clipboard.js 实现点击复制
- python定义一个有长度的列表
- form-data和x-www-form-urlencoded的区别和延伸
- Ubuntu 蓝屏拯救
- 第二章 信息系统服务管理
- android--多点触控的实现
- 推荐9个最顶级的IT公众号
热门文章
- Linux内核源码组织结构
- FME高性能编程,让你的FME快起来
- ROOT(a Data analysis Framework)-Note6: iSTEP day3-Random
- iPhone SDK 包含哪些东西?
- Python123 期末题库
- Linux里面的oa环境是什么,Linux下oa环境搭建
- 报错Warning: ReactDOM.render is no longer supported in React 18.Use createRoot instead.Until you...
- WebRTC 教程四: WebRTC聊天室设计和搭建
- 设计模式01-设计模式中的七大原则
- 日本电产尼得科Nidec研发出超薄直线振动马达