Python黑科技:FuckIt.py
說起 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://github.com/ajalt/fuckitpy
推薦閱讀
Python:如何用一行程式碼獲取上個月是幾月
PS:昨天的推文【說兩個事情】有上次贈書活動的名單,中獎的朋友別忘了發寄件地址給我。
相關文章
- 黑科技開戶神器黑科技開戶神器黑科技開戶神器黑科技開戶神器黑科技開戶神器
- 分享行業“黑科技”行業
- 黑袋子——一個擁有黑科技的APPAPP
- javascript黑科技之高效填充JavaScript
- 幾個CSS的黑科技CSS
- CSS黑科技補充篇CSS
- Laravel 黑科技:Eloquent 裡的 withCountLaravel
- 黑科技:LocalStorage 快取機制快取
- 安卓黑科技之HOOK詳解安卓Hook
- 強化工控網路安全 綠盟科技竟祭出黑科技!
- 史上最全的谷歌公司那些黑科技谷歌
- 搶火車票這個事吧,其實我也能做!(python黑科技)Python
- 深入理解python虛擬機器:黑科技的幕後英雄——描述器Python虛擬機
- 如何用好 Go 的測試黑科技Go
- 4. 黑科技 Interface |《 刻意學習 Golang 》Golang
- 【黑科技】React-canvas助力HTML5ReactCanvasHTML
- 這5款黑科技app用了就上癮APP
- 足球黑科技之AI與足球智慧分析AI
- 「黑科技」無人機殺手——無彈步槍DroneDefender無人機
- Flutter黑科技一鍵開啟資原始檔Flutter
- 曲線救國:webpack打包優化黑科技Web優化
- 前端必知必會--操作URL的黑科技前端
- 聯想ThindPad用上Optane硬碟 Intel最新黑科技硬碟Intel
- 2019前端必會黑科技之PWA前端
- 網頁前端黑科技PWA的優劣對比網頁前端
- Echarts4.0釋出了,都增加哪些黑科技呢?Echarts
- Google BBR黑科技,讓你的下載速度翻倍!Go
- 初步探索GraalVM--雲原生時代JVM黑科技LVMJVM
- JavaScript 最新特性實現的三大黑科技JavaScript
- 黑科技!腦控技術實現 VR將如臂使指?VR
- Oracle壓縮黑科技(一)—基礎表壓縮Oracle
- 盤點無人機避障技術 誰是黑科技?無人機
- 為什麼大多程式設計師黑php不黑python?程式設計師PHPPython
- element-ui 表單校驗 Rules 配置 常用黑科技UI
- 數字化智慧工地黑科技無人機智慧巡查系統無人機
- 這個 “少年黑客”,用黑科技守護獨居老人黑客
- 前端黑科技:美團網頁首幀優化實踐前端網頁優化
- 因特爾黑科技:黑暗中快速成像系統