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内置函数的用法实例教程
Sep 08 Python
Python装饰器(decorator)定义与用法详解
Feb 09 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
Python生成词云的实现代码
Jan 14 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
Feb 11 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
python3中编码获取网页的实例方法
Nov 16 Python
Python 多线程之threading 模块的使用
Apr 14 Python
教你用Python爬取英雄联盟皮肤原画
Jun 13 Python
Python万能模板案例之matplotlib绘制甘特图
Apr 13 Python
python 使用pandas读取csv文件的方法
Dec 24 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
在PHP中读取和写入WORD文档的代码
2008/04/09 PHP
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
javascript 特殊字符串
2009/02/25 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
numpy排序与集合运算用法示例
2017/12/15 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
详解python中sort排序使用
2019/03/23 Python
Python 实现自动导入缺失的库
2019/10/29 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
小学生综合素质评语
2014/04/23 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
主持人开场白台词
2015/05/29 职场文书
《金色的草地》教学反思
2016/02/17 职场文书