# Python 內建函式庫 ###### tags: `python` ## re 這是一個非常萬用的字詞查找函式庫 基本上很多搜尋功能都是以re為基礎的 直接貼網址以備不時之需 https://www.runoob.com/python/python-reg-expressions.html ## importlib 可以直接import字串 配合getattr或是hasattr會有奇效 ## pytz 時區表示的函式庫 通常是在上機器的時候使用,任何有用到時間格式的東西記得要給個時區 絕對不要自己 +8 會有誤差 ## bson 一開始不知道long是啥 python沒有long的概念 利用 bson.int64.Int64(num) 就可以把存進資料庫的 int 轉成 long ## logging 比較自由的自己創造就用 ```python= log = logging.getLogger(log_name) ``` 在debug跟report的時候很好用 ## super 超類 涉及多重繼承的時候常用 可以指定上一層(依照繼承順序)的func來使用 有需要用到的話網址[在這](https://medium.com/@dboyliao/python-%E7%B9%BC%E6%89%BF-543-bc3d8ef51d6d) ## List特性 最近因為ETL一直OOM,所以來測試一下是哪裡出錯,中間測到list的部分,發現如果append東西進去的話其實是複製一份進list,而不是list的index指向值,切記! ## Singleton 如果需要自己實作singleton可用以下作為裝飾器 ```python= class Singleton(object): instances = {} def __new__(cls, clz=None): if clz is None: print("Creating object for", cls) if not cls.__name__ in Singleton.instances: Singleton.instances[cls.__name__] = \ object.__new__(cls) return Singleton.instances[cls.__name__] print(cls.__name__, "creating", clz.__name__) Singleton.instances[clz.__name__] = clz() Singleton.first = clz return type(clz.__name__, (Singleton,), dict(clz.__dict__)) ```