Python实用工具FuckIt.py介绍


Posted in Python onJuly 02, 2019

说起 Python 强大的地方,你可能想到是它的优雅、简洁、开发速度快,社区活跃度高。但真正使得这门语言经久不衰的一个重要原因是它的无所不能,因为社区有各种各样的第三库,使得我们用Python实现一个东西实在是太简单了,你经常会看到几行代码实现爬虫,10行代码实现人脸识别,虽然有些夸张,但确实就是有这样的库帮你把所有的繁文缛节全部封装了,最后给你开放一个优雅的 API。

今天给你推荐的这个库叫 “FuckIt.py”,名字一看就是很黄很暴力的那种,作者是这样介绍它的:

FuckIt.py uses state-of-the-art technology to make sure your Python code runs whether it has any right to or not. Some code has an error? Fuck it.

FuckIt.py 使用了最先进的技术能够使你的代码不管里面有什么样的错误,你只管 FuckIt,程序就能“正常”执行,兵来将挡水来土掩。

还是先来看个例子怎么使用的吧。

安装

pip install fuckit

假设有一个目标文件: broke.py

def f():
broken_code
print('fuckit chaining works')
for
let's just assume this is a big module of shitty code.
x = y
y = x
1 / 0 # Oh shhhiiiiiii
var = "Are you proud of what you've done?"

broke.py 中有几处明显的错误,包括语法错误,变量 broken_code 没有被定义,还有0当作被除数。

如果直接 import broke 肯定会报错

>>> import broke
File "broke.py", line 5
for
^
SyntaxError: invalid syntax

这时你可以使用 fuckit 将 broke 导入进来。

>>> import fuckit
>>> fuckit("broke")
<module 'broke' from 'broke.py'>
>>> broke
<module 'broke' from 'broke.py'>

调用函数 f 的时候也会报错

>>> broke.f()
NameError: global name 'broken_code' is not defined

你可以使用链式 fuckit 来调用这个有问题的函数

>>> fuckit(broke).f()
fuckit chaining works

或者

>>> fuckit(fuckit("broke")).f()
fuckit chaining works

除此之外,fuckit 还可以作为装饰器和上下文管理器来使用。

装饰函数

>>> @fuckit
... def broken_function():
... non_existant_variable # Let's create a NameError
... return 'Function decorator works'
...
>>> print(broken_function())
None

装饰类

>>> @fuckit
... class BrokenClass(object):
... def f(self):
... self.black_hole = 1 / 0
... return 'Class decorator works'
...
>>> print(BrokenClass().f())
None

上下文管理器

>>> with fuckit:
... print('Context manager works')
... raise RuntimeError()
...

等价于

try:
print('Context manager works')
except RuntimeError:
pass

看到这里,是不是感觉 fuckit 很暴力,那么它能用在什么场景?个人认为这个库很鸡肋,因为你的代码不应该容忍这些错误的出现,如果出现了错误应该立马修复才是,但有一种可能的使用场景是你刚接手一份超复杂的代码,里面各种看不懂的代码,而这些操蛋的代码时不时出现一个错误,而你又没法驾驭它的时候,你就用 fuckit 吧。

fuckit的源代码不到200行,好奇的你是不是很想知道它怎么实现了,用了什么黑科技?访问项目地址:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python getopt 参数处理小示例
Jun 09 Python
跟老齐学Python之模块的加载
Oct 24 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
Python Series从0开始索引的方法
Nov 06 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
python字符串下标与切片及使用方法
Feb 13 Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 Python
基于Python实现视频的人脸融合功能
Jun 12 Python
python实现视频压缩功能
Dec 18 Python
Python如何实现转换URL详解
Jul 02 #Python
Pandas的read_csv函数参数分析详解
Jul 02 #Python
如何使用Python实现斐波那契数列
Jul 02 #Python
pandas数据筛选和csv操作的实现方法
Jul 02 #Python
Python列表与元组的异同详解
Jul 02 #Python
Pandas中resample方法详解
Jul 02 #Python
Python何时应该使用Lambda函数
Jul 02 #Python
You might like
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
js实现文字滚动效果
2016/03/03 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
python读取注册表中值的方法
2013/04/08 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
python的移位操作实现详解
2019/08/21 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
给校长的建议书200字
2014/05/16 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
计划生育标语
2014/06/23 职场文书
妇女工作先进事迹
2014/08/17 职场文书
春季运动会加油词
2015/07/18 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
使用javascript解析二维码的三种方式
2021/11/11 Javascript