假設你git clone了乙個函式庫,然後想要在某一段**中呼叫其中的某乙個函式,請問你要怎麼做呢?
這裡,我們來給出乙個這類函式的呼叫小trick。
其實方法也比較簡單,一種簡單粗暴的方法就是把這個函式的路徑加入到系統的python path中,但是這種操作是永續的,在更多情況下,我們只是想要臨時在某些指令碼中呼叫這個方法,在其他情況下,我們並不希望這個路徑加入到我們的系統python path中。
因此,我們可以在程式中通過下述**進行呼叫:
import sys
print
(sys.path)
# 列印python path,list格式,其元素即為庫函式路徑。
"your function file path"
)# 加入你的函式所在目錄
執行上述操作之後,目標路徑就被臨時加入到python path中了,之後你就可以輕鬆的進行呼叫了。
需要注意的是,如果你是複寫了已有的某個函式,那麼你需要將你的路徑insert到開頭的位置,否則它不會讀入你的函式,而是會讀入之前已有的函式。
cache方法也是python中常用的提高執行效率的常見方法,其主要思路為將函式與其輸入儲存到快取中,當需要重複呼叫時,直接讀取其之前執行的結果,而不需要再重新計算一邊。
因此,這算是一種比較暴力的動態規劃實現方法。但是,由於他是直接讀取的上一次的執行結果,當不同時刻執行結果會不相同時,絕對不能使用cache,另外,由於需要將結果一直儲存在快取中,所以對於非頻繁呼叫的密集計算型函式,也不建議使用cache。
下面,我們給出兩種cache的實現方法:
lru_cache
from functools import lru_cache
@lru_cache(
none
)def
factor
(n):
if n <=1:
return
1return n * factor(n-
1)
beaker
from beaker.cache import cachemanager
from beaker.util import parse_cache_config_options
cache_opts =
cache = cachemanager(
**parse_cache_config_options(cache_opts)
)@cache.cache(
'test'
, expire=
600)
deffactor
(n):
if n <=1:
return
1return n * factor(n-
1)
更詳細的使用方法可以參考兩者的官方說明文件,這裡不再展開。
tqdm函式庫為python中常用的一種進度條繪製方法。
from tqdm import tqdm
ans =
0with tqdm(
range(1
,101
), ncols=
100)
as t:
for i in t:
ans += i
print
(ans)
其中,tqdm的輸入為乙個list或者為乙個迭代器,且只有在輸入為list等已知總長度的情況下,可以正確顯示進度條,否則只會通過數字顯示已執行進度。
而tqdm的執行邏輯事實上是在每一次列印之後將當前位置指標重新退行,然後再上一行中覆蓋列印內容。因此,如果進度條長度過長,超過單行總長度或者在訓練中列印了新的內容時,回溯上一行就會失敗,無法回到上一次進度條的開始位置,故而導致進度條顯示異常。
因此,我個人建議使用ncols引數人為地去指定一下進度條的總長度。
另外,需要注意的是,我們上面使用了with的寫法,這是一種比較推薦的寫法,因為tqdm函式如果遇到強制終止程式等情況時,時常會出現一些bug,無法正常地完成回溯,而使用with方法可以很好的處理這部分的異常。
python筆記 一些常用的小trick(二)
2.生成器 3.儲存列印結果 4.參考文獻 裝飾器的概念有點類似於數學中的泛函,是函式的函式。其輸入引數為乙個方法,輸出為另乙個方法。熟練地使用裝飾器,我們可以更好地對函式進行模組化操作,減少重複 量。下面,我們來考察一下裝飾器的使用,具體包括以下內容 裝飾器的一般用法 向裝飾器中傳入額外引數 給出...
python 的一些筆記
1.模組的使用 在python中,模組內部使用的變數是通過字首 實現的。類似於 的變數是特殊變數,比如 author 2.類中的函式和普通的函式的不同點 類中的函式第乙個引數永遠是例項變數self,並且呼叫時不同傳遞該引數。3.在python中,類似於 的變數不是私有變數,私有變數是類似於 xx這樣...
更新一些常用的小軟體
這些都是平常用的一些小工具,怕丟失了 寫起來留個爪 tiny pdf 今天想找個工具把doc轉換成pdf,找了好幾個軟體,都不怎麼理想,最後看到這個260來k的小軟體,效果很好,使用 在控制面板中,開啟印表機與傳真,選定tiny pdf為預設印表機即可。然後開啟乙個word文件,直接列印,結果即為p...