Python实用工具FuckIt.py介绍
作者:FOOFISH-PYTHON之禅 发布时间:2022-11-25 01:41:26
说起 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行,好奇的你是不是很想知道它怎么实现了,用了什么黑科技?访问项目地址:
来源:https://foofish.net/fuckit.html


猜你喜欢
- 在例子视图中返回文本的方式有点特别,即HTML被直接硬编码在Python代码之中。def current_datetime(request)
- 每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush()
- Win8.1下安装Python3.6提示0x80240017错误,如何解决?定位原因缺少Windows补丁KB2999226解决方法到Mic
- 前言有时候我们为了更好的利用计算机资源,可以把一些耗时长的任务队列化异步执行。举个对应简单的生活中例子就是大多数餐厅里面点菜都是先找地方做,
- 介绍使用subprocess模块的目的是用于替换os.system等一些旧的模块和方法。运行python的时候,我们都是在创建并运行一个进程
- 前言版本:windows 10.0python 3.8问题简述近期看到这么一个问题,有把值分别赋值给不同的变量,想在比较大小后得到变量的名称
- 本文介绍了Python实现快速傅里叶变换的方法(FFT),分享给大家,具体如下:这里做一下记录,关于FFT就不做介绍了,直接贴上代码,有详细
- offsetWidth 包括边框的宽度 clientWidth 不包括<table bord
- 插入视图的条件: 1.如果视图是基于一个基础表产生的,那么这就称为非连接视图,所有的非连接视图都是可以更新的,也就是说可以在该视图上进行,I
- MySQL数据库线程缓冲池的相关知识是本文我们主要要介绍的内容,MySQL数据库支持线程缓存,在多线程连接模式下,如果连接断开后,将这个线程
- 无论是Windows、Linux、还是树莓派 。配置python3的opencv环境都是让人头大的一件事情,尤其是许多人用pip安装以后,发
- 如下所示:# -*- coding: utf-8 -*-# @Time : 2018/1/17 16:37# @Author :
- 在开始编写应用之前,我们先从最基本的程序开始。就像你造房子之前不知道什么是地基一样,编写程序也不知道如何开始。因此,在本节中,我们要学习用最
- 需要下载某网站的视频,chrome浏览器按F12打开开发者模式,发现视频链接是以"blob:http"开头的链接,打开这
- tensor内所有元素相乘a = torch.Tensor([1,2,3])print(torch.prod(a))输出 tens
- 在服务器部署时,往往都是在后台运行。当程序发生特定的错误时,我希望能够在日志中查询。因此这里熟悉以下 logging 模块的用法。loggi
- Python2 和 Python3 是不兼容的,如果碰到无法升级到 Python2 代码,或者同事中有坚守 Python2 阵营的情况,就要
- 1.为什么写这个?一些简单的页面,无需用比较大的框架来进行爬取,自己纯手写又比较麻烦因此针对这个需求写了talonspider:•1.针对单
- 目录logging的简单使用|2logging常见对象|3logging基本使用|4logging之Formatter对象|5logging
- 本文实例为大家分享了python3.6实现弹跳小球游戏的具体代码,供大家参考,具体内容如下import randomimport timef