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中的index()方法使用教程
May 18 Python
在Python的Django框架中生成CSV文件的方法
Jul 22 Python
Python数据类型详解(三)元祖:tuple
May 08 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
深入浅析python的第三方库pandas
Feb 13 Python
python 已知三条边求三角形的角度案例
Apr 12 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
PHP 基本语法格式
2009/12/15 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
python计算最小优先级队列代码分享
2013/12/18 Python
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
python实现机器学习之多元线性回归
2018/09/06 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
中专毕业生求职简历的自我评价
2013/10/21 职场文书
高中体育教学反思
2014/01/29 职场文书
医院检讨书范文
2014/02/01 职场文书
岗位职责风险防控
2014/02/18 职场文书
出国留学担保书
2014/05/20 职场文书
公司授权委托书范本
2014/09/18 职场文书
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android