Python實(shí)用工具FuckIt.py介紹
說(shuō)起 Python 強(qiáng)大的地方,你可能想到是它的優(yōu)雅、簡(jiǎn)潔、開(kāi)發(fā)速度快,社區(qū)活躍度高。但真正使得這門(mén)語(yǔ)言經(jīng)久不衰的一個(gè)重要原因是它的無(wú)所不能,因?yàn)樯鐓^(qū)有各種各樣的第三庫(kù),使得我們用Python實(shí)現(xiàn)一個(gè)東西實(shí)在是太簡(jiǎn)單了,你經(jīng)常會(huì)看到幾行代碼實(shí)現(xiàn)爬蟲(chóng),10行代碼實(shí)現(xiàn)人臉識(shí)別,雖然有些夸張,但確實(shí)就是有這樣的庫(kù)幫你把所有的繁文縟節(jié)全部封裝了,最后給你開(kāi)放一個(gè)優(yōu)雅的 API。
今天給你推薦的這個(gè)庫(kù)叫 “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 使用了最先進(jìn)的技術(shù)能夠使你的代碼不管里面有什么樣的錯(cuò)誤,你只管 FuckIt,程序就能“正?!眻?zhí)行,兵來(lái)將擋水來(lái)土掩。
還是先來(lái)看個(gè)例子怎么使用的吧。
安裝
pip install fuckit
假設(shè)有一個(gè)目標(biāo)文件: 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 中有幾處明顯的錯(cuò)誤,包括語(yǔ)法錯(cuò)誤,變量 broken_code 沒(méi)有被定義,還有0當(dāng)作被除數(shù)。
如果直接 import broke 肯定會(huì)報(bào)錯(cuò)
>>> import broke File "broke.py", line 5 for ^ SyntaxError: invalid syntax
這時(shí)你可以使用 fuckit 將 broke 導(dǎo)入進(jìn)來(lái)。
>>> import fuckit
>>> fuckit("broke")
<module 'broke' from 'broke.py'>
>>> broke
<module 'broke' from 'broke.py'>
調(diào)用函數(shù) f 的時(shí)候也會(huì)報(bào)錯(cuò)
>>> broke.f() NameError: global name 'broken_code' is not defined
你可以使用鏈?zhǔn)?fuckit 來(lái)調(diào)用這個(gè)有問(wèn)題的函數(shù)
>>> fuckit(broke).f() fuckit chaining works
或者
>>> fuckit(fuckit("broke")).f()
fuckit chaining works
除此之外,fuckit 還可以作為裝飾器和上下文管理器來(lái)使用。
裝飾函數(shù)
>>> @fuckit ... def broken_function(): ... non_existant_variable # Let's create a NameError ... return 'Function decorator works' ... >>> print(broken_function()) None
裝飾類(lèi)
>>> @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()
...
等價(jià)于
try:
print('Context manager works')
except RuntimeError:
pass
看到這里,是不是感覺(jué) fuckit 很暴力,那么它能用在什么場(chǎng)景?個(gè)人認(rèn)為這個(gè)庫(kù)很雞肋,因?yàn)槟愕拇a不應(yīng)該容忍這些錯(cuò)誤的出現(xiàn),如果出現(xiàn)了錯(cuò)誤應(yīng)該立馬修復(fù)才是,但有一種可能的使用場(chǎng)景是你剛接手一份超復(fù)雜的代碼,里面各種看不懂的代碼,而這些操蛋的代碼時(shí)不時(shí)出現(xiàn)一個(gè)錯(cuò)誤,而你又沒(méi)法駕馭它的時(shí)候,你就用 fuckit 吧。
fuckit的源代碼不到200行,好奇的你是不是很想知道它怎么實(shí)現(xiàn)了,用了什么黑科技?訪問(wèn)項(xiàng)目地址:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)大戰(zhàn)外星人小游戲?qū)嵗a
這篇文章主要介紹了python實(shí)現(xiàn)大戰(zhàn)外星人小游戲,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
Python while true實(shí)現(xiàn)爬蟲(chóng)定時(shí)任務(wù)
這篇文章主要介紹了Python爬蟲(chóng)定時(shí)任務(wù)簡(jiǎn)單實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
python 項(xiàng)目目錄結(jié)構(gòu)設(shè)置
JAVA有標(biāo)準(zhǔn)的maven目錄結(jié)構(gòu),golang也有建議的目錄結(jié)構(gòu),那么我想python是不是也有一個(gè)比較好的目錄結(jié)構(gòu)組織方式呢2020-02-02
Python使用matplotlib時(shí)顯示中文亂碼解決方法(或更改字體)
這篇文章主要給大家介紹了關(guān)于Python使用matplotlib時(shí)顯示中文亂碼的解決方法(或更改字體),在Matplotlib中,中文亂碼問(wèn)題通常出現(xiàn)在圖表的標(biāo)題、標(biāo)簽和刻度上,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
Python語(yǔ)言的變量認(rèn)識(shí)及操作方法
這篇文章主要介紹了Python語(yǔ)言的變量認(rèn)識(shí)及操作方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02
python3 中文亂碼與默認(rèn)編碼格式設(shè)定方法
今天小編就為大家分享一篇python3 中文亂碼與默認(rèn)編碼格式設(shè)定方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
python實(shí)現(xiàn)的二叉樹(shù)算法和kmp算法實(shí)例
最近重溫?cái)?shù)據(jù)結(jié)構(gòu),又用python,所以就用python重新寫(xiě)了數(shù)據(jù)結(jié)構(gòu)的一些東西,以下是二叉樹(shù)的python寫(xiě)法2014-04-04
Python圖像運(yùn)算之頂帽運(yùn)算和底帽運(yùn)算詳解
數(shù)學(xué)形態(tài)學(xué)是應(yīng)用于圖像處理和模式識(shí)別領(lǐng)域的新方法。數(shù)學(xué)形態(tài)學(xué)表示以形態(tài)為基礎(chǔ)對(duì)圖像進(jìn)行分析的數(shù)學(xué)工具,基本思想是用具有一定形態(tài)的結(jié)構(gòu)元素去量度和提取圖像中對(duì)應(yīng)形狀以達(dá)到對(duì)圖像分析和識(shí)別的目的。本文將為大家介紹頂帽運(yùn)算和底帽運(yùn)算,需要的可以參考一下2022-07-07

