一:沒有什麼實際意思,就是單純的理解decorator。使用裝飾器完全可以阻止方法中的**執行。
class json_test(object): def __init__(self, *arg, **args):
self.name = '
default_name
'self.gender = '
default_gender
'self.age = 0
self.address =none
jt =json_test()
class ignore_null_value(object
): def __init__(self, *args, **kwargs):
print(
'ignore_null_value.init')
@staticmethod
def to_json(*arg, **args):
d ={}
for key, value in arg[0
].__dict__.items():
if value !=none:
d.setdefault(key, value)
for key, value in
args:
d.setdefault(key, value)
return
d
class keep_null_value(object
): def __init__(self, *args, **kwargs):
print(
'keep_null_value.init')
@staticmethod
def to_json(o):
return
o.__dict__
def deco(c):
def _deco(func):
def __deco(*arg, **args):
print(
'before')
try:
s = c.to_json(*arg, **args)
return
s
finally
: print(
'after')
return
__deco
return
_deco
class c(object
): @staticmethod
@deco(keep_null_value)
def json_from(self, a):
pass
cl =c()
print cl.json_from(jt)
二:輸出前後加上log,這個是書中的原例子,哪本書不記得了,不是《python基礎教程》就是《python核心程式設計》
fromtime import time
def logged(when):
def log(f, *args, **kargs):
'''called:
function: %s
args: %r
kargs: %r'''
% (f, args, kargs)
def pre_logged(f):
log(f, *args, **kargs)
return f(*args, **kargs)
return
def post_logged(f):
now =time()
try:
log(f, *args, **kargs)
return f(*args, **kargs)
finally
"time delta: %s
" % (time() -now)
return
try:
return [when]
except keyerror, e:
raise valueerror(e),
'must be "pre" or "post"
'@logged(
"post")
def hello(name):
"hello,
", name
hello(
"world!")
python 兩個值得學習的小例子
這兩個問題都是在中做pythin挑戰時碰到的,覺得很不錯 1.給你乙個字串a和乙個正整數n,判斷a中是否存在長度為n的回文子串。如果存在,則輸出yes,否則輸出no。回文串的定義 記串str逆序之後的字串是str1,若str str1,則稱str是回文串,如 abcba a abcbaasdjhka...
python爬蟲 兩個簡單的小例子
import requests url value input search headers param response requests.get url url,params param,headers headers response.encoding utf 8 亂碼 page conten...
C兩個小例子(陣列與指標)
所謂的大端模式,是指資料的高位,儲存在記憶體的低位址中,而資料的低位,儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 例子 0000430 e684 6c4e 0100 1800 53ef 0100 0100 0000 0000440...