Python学习第八天
-
help(函数)可以查看函数doc文档
-
匿名函数,功能只是一次性使用,使用匿名函数可以使代码更简洁
f = lambda x:x*x # lamdba arg1 arg2 : f返回表达式的值 print(f(2)) a=[1,2,3] def f2(list,fun): for i in list: print(fun(i)) f2(a,lambda x:x+1) def do_list(fun,container): if isinstance(container,list): #判断类型 for i in container: print(fun(i)) a = [10,20,30] print(type(a)) do_list(lambda x:x+1,a)
-
偏函数:
函数/方法重载:类内部方法名字相同,但是参数列表不一样
fun(x):fun(1) fun(“y”) 动态类型语言不能根据实参类型来推断调用的函数
def log(level,message):
print(level+":"+message)
def log_warning(level,message):
if level == “warning”:
print(level+":"+message)
log(“debug”,“var x = 100”)
log_warning(“warning”,“x is none”)
#导入偏函数
from functools import partial
log_error = partial(log,“error”)
log_error(“a_error”)
def log_debug(info):
return partial(log,message=info)
f = log_debug(“debug info”)
f(“debug”) -
函数柯里化 Currying
函数链式调用
def one():
print(“call one()”)
def tow():
print(“call tow()”)
def three():
print(“call three()”)
return three
return tow
one ()()()
5.装饰器修改函数行为:
AOP: 面向方面编程,把公共的功能(身份验证、安全校验、权限验证、类型转换、数据验证、数据稽核、异常处理、性能检测、数据预处理、埋点…)做成独立模块,函数使用装饰器切入到需要的地方(函数调用的位置)
利用装饰器切入公共功能:
#import time
class MyDecorator(object):
fun: 被装饰的函数
def __init__(self,fun):
self.fun = fun
def __call__(self,*args,**kwargs):
print("切入安全验证功能!")
print(self.fun.__name__)
print(args[0])
print(args[1])
print(kwargs)
result = self.fun(*args,**kwargs)
print("记录日志!")
#print(detetime.datetime.now().year)
return result
@MyDecorator
def place_order(user_id,password):
print("下单成功!")
place_order("admin","admin")
利用装饰器进行数据预处理:
去除中英文标点符号、大写转换:
import zhon
import re # 正则表达式
#英文标点符号
from string import punctuation as pun
print(pun)
#中文标点符号
from zhon.hanzi import punctuation
print(punctuation)
stc_str = “aAFASD QF WGwea,wwfga w!asfas~~~a s dad. dasWWGd feq w5999”
no_en_pn_str = re.sub(r"[%s]+"%pun,’’,stc_str)
print("【去除英文标点符号】")
print(no_en_pn_str)
print("【去除中文标点符号】")
no_cn_pn_str = re.sub(r"[%s]+"%punctuation,’’,no_en_pn_str)
print(no_cn_pn_str)
result = no_cn_pn_str.split()
print(result)
result = no_cn_pn_str.replace(" “,”")
print(result)
x = result.lower()
print(x)