顯示有限的接口到外部
當釋出python第三方package時, 并不希望代碼中所有的函數或者class可以被外部import, 在
__init__.py
中添加
__all__
屬性,
該list中填寫可以import的類或者函數名, 可以起到限制的import的作用, 防止外部import其他函數或者類
執行結果如下:
證明了會先執行方法, 然後調用with内的邏輯, 最後執行
__enter__
做退出處理, 并且, 即使出現異常也能正常退出
__exit__
filter的用法
相對
filter
而言, map和reduce使用的會更頻繁一些,
filter
正如其名字, 按照某種規則
過濾
掉一些元素
一行作判斷
當條件滿足時, 傳回的為等号後面的變量, 否則傳回else後語句
裝飾器之單例
使用裝飾器實作簡單的單例模式
staticmethod裝飾器
類中兩種常用的裝飾, 首先區分一下他們
- 普通成員函數, 其中第一個隐式參數為
對象
-
, 類方法(給人感覺非常類似于OC中的類方法), 其中第一個隐式參數為classmethod裝飾器
類
-
, 沒有任何隐式參數. staticmethod裝飾器
python中的靜态方法類似與C++中的靜态方法
property裝飾器
- 定義私有類屬性
将
property
與裝飾器結合實作屬性私有化(
更簡單安全的實作get和set方法
)#python内建函數property(fget=None, fset=None, fdel=None, doc=None)
fget
是擷取屬性的值的函數,
fset
是設定屬性值的函數,
fdel
是删除屬性的函數,
doc
是一個字元串(like a comment).從實作來看,這些參數都是可選的property有三個方法
getter()
,
setter()
和
delete()
來指定fget, fset和fdel。這表示以下這行
iter魔法
- 通過yield和
的結合, 我們可以把一個對象變成可疊代的__iter__
- 通過
的重寫, 可以直接通過想要的形式列印對象__str__
神奇partial
partial使用上很像C++中仿函數(函數對象).在stackoverflow給出了類似與partial的運作方式
利用用閉包的特性綁定預先綁定一些函數參數, 傳回一個可調用的變量, 直到真正的調用執行
神秘eval
eval我了解為一種内嵌的python解釋器(這種解釋可能會有偏差), 會解釋字元串為對應的代碼并執行, 并且将執行結果傳回看一下下面這個例子
exec
- exec在Python中會忽略傳回值, 總是傳回None, eval會傳回執行代碼或語句的傳回值
-
和exec
在執行代碼時, 除了傳回值其他行為都相同eval
- 在傳入字元串時, 會使用
編譯位元組碼. mode的取值為compile(source, '<string>', mode)
和exec
eval
etattr
getattr(object, name[, default])
Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example, getattr(x, ‘foobar’) is equivalent to x.foobar. If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised.
通過string類型的name, 傳回對象的name屬性(方法)對應的值, 如果屬性不存在, 則傳回預設值, 相當于object.name
指令行處理
讀寫csv檔案
各種時間形式轉換
隻發一張網上的圖, 然後差文檔就好了, 這個是記不住的
字元串格式化
一個非常好用, 很多人又不知道的功能>>> name = "andrew">>> "my name is {name}".format(name=name)'my name is andrew'
作者:code123
背景回複關鍵字:1024,擷取一份精心整理的技術幹貨背景回複關鍵字:進群,帶你進入高手如雲的交流群。推薦閱讀
背景回複關鍵字:1024,擷取一份精心整理的技術幹貨背景回複關鍵字:進群,帶你進入高手如雲的交流群。推薦閱讀