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 30 Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
python基于SMTP协议发送邮件
May 31 Python
在Python中表示一个对象的方法
Jun 25 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
python 实现PIL模块在图片画线写字
May 16 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
python如何建立全零数组
Jul 19 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 Python
Python Django搭建文件下载服务器的实现
May 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
twig里使用js变量的方法
2016/02/05 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
python asyncio 协程库的使用
2021/01/21 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
高中生自我鉴定范文
2013/10/30 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
干部理论学习心得体会
2016/01/21 职场文书
MySQL 聚合函数排序
2021/07/16 MySQL
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL