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之从格式化表达式到方法
Sep 28 Python
Python中用于去除空格的三个函数的使用小结
Apr 07 Python
python中Genarator函数用法分析
Apr 08 Python
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
Python:slice与indices的用法
Nov 25 Python
keras多显卡训练方式
Jun 10 Python
改变 Python 中线程执行顺序的方法
Sep 24 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
php笔记之:AOP的应用
2013/04/24 PHP
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
继续学习javascript闭包
2015/12/03 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
初学node.js中实现删除用户路由
2019/05/27 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python 产生token及token验证的方法
2018/12/26 Python
Python异常处理知识点总结
2019/02/18 Python
彻底理解Python中的yield关键字
2019/04/01 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
python获取linux系统信息的三种方法
2020/10/14 Python
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
护士思想汇报
2014/01/12 职场文书
大学军训决心书
2015/02/05 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
Win11开始菜单添加休眠选项
2022/04/19 数码科技