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判断操作系统类型代码分享
Nov 22 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
Python爬虫实现简单的爬取有道翻译功能示例
Jul 13 Python
Python中应该使用%还是format来格式化字符串
Sep 25 Python
Python做智能家居温湿度报警系统
Sep 25 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
Pandas DataFrame求差集的示例代码
Dec 13 Python
使用python实现学生信息管理系统
Feb 25 Python
python3 字符串str和bytes相互转换
Mar 23 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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
js下函数般调用正则的方法附代码
2008/06/22 PHP
php变量范围介绍
2012/10/15 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
跟老齐学Python之dict()的操作方法
2014/09/24 Python
python错误处理详解
2014/09/28 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
周年庆典邀请函范文
2014/01/24 职场文书
产品包装策划方案
2014/05/18 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
教师个人学习总结
2015/02/11 职场文书
计生个人工作总结
2015/02/28 职场文书
论文答辩开场白大全
2015/05/27 职场文书
草房子读书笔记
2015/06/29 职场文书