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实现数据库编程方法详解
Jun 09 Python
轻松掌握python设计模式之访问者模式
Nov 18 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
python机器学习之KNN分类算法
Aug 29 Python
Python----数据预处理代码实例
Mar 20 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
python用opencv 图像傅里叶变换
Jan 04 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
如何判断pytorch是否支持GPU加速
Jun 01 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
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
Node.js简单入门前传
2017/08/21 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
Python本地与全局命名空间用法实例
2015/06/16 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
Python实现的爬虫功能代码
2017/06/24 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python微信好友数据分析详解
2018/11/19 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Python 切分数组实例解析
2019/11/07 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
护理专业的自荐信
2013/10/22 职场文书
库房主管岗位职责
2013/12/31 职场文书
《乌塔》教学反思
2014/02/17 职场文书
骨干教师考核方案
2014/05/09 职场文书
2014年党建工作总结
2014/11/11 职场文书
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技