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 19 Python
用python找出那些被“标记”的照片
Apr 20 Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 Python
python进程间通信Queue工作过程详解
Nov 01 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
Python3中最常用的5种线程锁实例总结
Jul 07 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 15 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
php a simple smtp class
2007/11/26 PHP
PHP无限分类(树形类)
2013/09/28 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
浅谈Javascript面向对象编程
2011/11/15 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
PHP7新特性简述
2017/06/11 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
详解javascript中的babel到底是什么
2018/06/21 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
Eclipse + Python 的安装与配置流程
2013/03/05 Python
python单线程实现多个定时器示例
2014/03/30 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
Python面向对象封装操作案例详解
2019/12/31 Python
Python与C/C++的相互调用案例
2021/03/04 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
Linux常见面试题
2013/03/18 面试题
应届毕业生个人自我评价
2013/09/20 职场文书
计算机系本科生求职信
2014/05/31 职场文书
领导干部保密承诺书
2014/08/30 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
写给导师的自荐信
2015/03/06 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
pytorch实现手写数字图片识别
2021/05/20 Python