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根据出生日期返回年龄的方法
Mar 26 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
python matplotlib画图实例代码分享
Dec 27 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
Python实现的计算器功能示例
Apr 26 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
python 实现批量替换文本中的某部分内容
Dec 13 Python
python爬取微博评论的实例讲解
Jan 15 Python
pytorch实现手写数字图片识别
May 20 Python
python opencv旋转图片的使用方法
Jun 04 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
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
xtree.js 代码
2007/03/13 Javascript
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
layui使用label标签的方法
2019/09/14 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
怎样使用Python脚本日志功能
2016/08/14 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
韩国现代百货官网:Hmall
2018/03/21 全球购物
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
软件测试企业面试试卷
2016/07/13 面试题
作风整顿个人剖析材料
2014/10/06 职场文书
2014年班组工作总结
2014/11/20 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
排查Tomcat进程假死的问题
2022/05/06 Servers