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写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
老生常谈进程线程协程那些事儿
Jul 24 Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
python使用pymongo操作mongo的完整步骤
Apr 13 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
基于树莓派的语音对话机器人
Jun 17 Python
pandas 时间格式转换的实现
Jul 06 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
深入了解Django View(视图系统)
Jul 23 Python
python爬虫 2019中国好声音评论爬取过程解析
Aug 26 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 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的4种常见运行方式
2015/03/20 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
详解Python中的strftime()方法的使用
2015/05/22 Python
Python调用C++程序的方法详解
2017/01/24 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
Django之PopUp的具体实现方法
2019/08/31 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
HEMA英国:荷兰原创设计
2018/08/28 全球购物
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
群众路线教育实践活动总结
2014/10/30 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书