day 5 pythonエッセイ勉強
3876 ワード
import functools
def wrapper(func):
@functools.wraps(func)
def test():
print 'before'
func()
print 'after'
return test
@wrapper # foo==>wrapper(foo)==>test
def foo():
print 'foo'
例2:マルチアクセサリー
多重装飾器は、ループ装飾であり、前の装飾器のreturn値は、次の装飾器に装飾する.
def w3(func):
def qwe(*args,**kwargs):
print '___'
func(*args,**kwargs)
print '___'
return qwe
def w1(func):
def inner(*args,**kwargs):
func(*args,**kwargs)
return inner
def w2(func):
def asd(*args,**kwargs):
print 'w2 start'
func(*args,**kwargs)
print 'w2'
func(*args,**kwargs)
print 'w2'
func(*args,**kwargs)
print 'w2 end'
return asd
@w1
@w2
@w3
def f1(arg,arg2,arg3):
print arg,arg2,arg3
f1('test1','test2','test3')
:
[root@localhost opt]# python test.py
w2 start
___
test1 test2 test3
___
w2
___
test1 test2 test3
___
w2
___
test1 test2 test3
___
w2 end
例3:パラメータ付装飾器
#!/usr/bin/env python
#coding:utf-8
def Before(request,kargs): #f1
print 'before'
def After(request,kargs): #f2
print 'after'
def Filter(before_func,after_func):
def outer(main_func):
def wrapper(request,kargs):
before_result = before_func(request,kargs)
if(before_result != None):
return before_result;
main_result = main_func(request,kargs)
if(main_result != None):
return main_result;
after_result = after_func(request,kargs)
if(after_result != None):
return after_result;
return wrapper
return outer
@Filter(Before, After) # Index==>Filter(Before,After)==>@outer==>outer(Index)==>warpper
def Index(request,kargs):
print 'index'
if __name__ == '__main__':
Index(1,2)
関数のデフォルトの戻り値はNoneです.
def func(arg1,arg2):
if arg1 == 0:
print arg1, arg2
arg3 = arg1 + arg2
print arg3
func(arg2, arg3)
func(0,1)
3.モジュール
モジュールのインポート:
importモジュール
fromモジュールimport単一モジュール
fromモジュールimport単一モジュールas単一モジュール別名
fromモジュールimport*
インポートモジュールはPython解釈器にそのpyファイルを説明するように伝えることです
hashlibモジュール
md 5モジュールとshaモジュールの代わりに、暗号化に関連する動作に使用され、主にSHA 1、SHA 224、SHA 256、SHA 384、SHA 512、MD 5アルゴリズムが提供される.
例:
import md5 hash = md5.new() hash.update('admin')
print hash.hexdigest()
MD 5 add salt衝突防止庫.
例:
import
hashlib
# ######## md5 ########
hash
=
hashlib.md5(
'898oaFs09f
'
)
hash
.update(
'admin'
)
print
hash
.hexdigest()
import
hmac
h
=
hmac.new(
'wueiqi'
)
h.update(
'hellowo'
)
print
h.hexdigest()