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中使用smtplib和email模块发送邮件实例
Apr 22 Python
用Python制作简单的朴素基数估计器的教程
Apr 01 Python
Python实现截屏的函数
Jul 26 Python
玩转python爬虫之正则表达式
Feb 17 Python
Python+django实现简单的文件上传
Aug 17 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
Python实战购物车项目的实现参考
Feb 20 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
python 数据分析实现长宽格式的转换
May 18 Python
Tensorflow--取tensorf指定列的操作方式
Jun 30 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 26 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
PHP APP微信提现接口代码
2018/09/30 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
ES6的新特性概览
2016/03/10 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
python实现将文本转换成语音的方法
2015/05/28 Python
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
全面分析Python的优点和缺点
2018/02/07 Python
基于Django用户认证系统详解
2018/02/21 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
StringBuilder和String的区别
2015/05/18 面试题
中专生的个人自我评价
2013/12/11 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
教育技术职业规划范文
2014/03/04 职场文书
计算机相关专业自荐信
2014/07/02 职场文书
《包身工》教学反思
2016/02/23 职场文书
MySQL创建表操作命令分享
2022/03/25 MySQL