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脚本实现分析dns日志并对受访域名排行
Sep 18 Python
python从入门到精通(DAY 3)
Dec 20 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
python 用for循环实现1~n求和的实例
Feb 01 Python
Python实战之制作天气查询软件
May 14 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Django 解决distinct无法去除重复数据的问题
May 20 Python
Python while true实现爬虫定时任务
Jun 08 Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
JS 实现分页打印功能
2018/05/16 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
JS使用for in有序获取对象数据
2020/05/19 Javascript
python pdb调试方法分享
2014/01/21 Python
Python中的Numpy入门教程
2014/04/26 Python
分享Python文本生成二维码实例
2016/01/06 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
python爬虫实现获取下一页代码
2020/03/13 Python
python能做哪方面的工作
2020/06/15 Python
python 写一个文件分发小程序
2020/12/05 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
英国鞋网:Rubber Sole
2020/03/03 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
运动会开幕式解说词
2014/02/05 职场文书
任命书范本大全
2014/06/06 职场文书
2014年电厂工作总结
2014/12/04 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
2015年教师国培感言
2015/08/01 职场文书
实习报告范文
2019/07/30 职场文书
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers
MySQL批量更新不同表中的数据
2022/05/11 MySQL