正则表达式
res = re.search(':(.*)-','Tel:028-7654321') #返回一个match对象,用group来处理 print(res.group(0)) #全部 print(res.group(1)) #第一部分 res = re.search('(\d{3,4})-(\d{7,8})','Tel:028-7654321') #返回一个match对象,用group来处理 print(res.group(0)) #全部 print(res.group(1)) #第一部分 print(res.group(2)) #第二部分 #---------------------------------------------------------- s = ''' Host: movie.doouban.com Pragma: no-cache Referer: https://cn.bing.com/ ''' dict01 = {} res = re.finditer('(.*):(.*)',s) #返回一个迭代器,迭代器返回match对象 for m in res: dict01[m.group(1).strip()] = m.group(2).strip() #生成一个字典
-------------------------------------------------------------- __init__.py的作用 1.package的标识,如果没有该文件,该目录就不会认为是package。 2.利用__all__去确定from import *的导入范围 mytool01文件夹下的__init__.py文件 __all__ = ['func01','func02']
mytool01文件夹下的func01.py文件 func02.py文件 func03.py文件
from mytool01 import * if __name__ == '__main__': func01.sayhi() func02.sayhello() func03.sayby() --->找不到 报错
--------------------------------------------------------------------------------------
print(__file__) #当前文件的绝对路径 print(os.path.dirname(__file__)) #当前文件父级路径的绝对路径 BASE_DIR = os.path.dirname(__file__) sys.path.append(BASE_DIR) sys.path 显示导包的路径 ['当前py文件的路径','pycharm加的当前项目的路径',...] ----------------------------------------------------------------- 匿名函数 func = lambda x,y=100:x+y func(1000,2000) ->3000 用匿名函数实现闭包
def outer_func(x): return lambda: 2*x # 返回的要是一个无输入函数 实现闭包 func_list=[] for i in range(1,10): func_list.append(outer_func(i))
------------------------------------------------------------------------ 小括号+列表推导式=生成器
list01 = ['a','b','c','d']
g1 = (item_+'dadadf' for item_ in list01)
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 #装饰器 from functools import wraps def auth(func): @wraps(func) # 把原函数的魔法方法传递给wrapper def wrapper(*args,**kwargs): print('-----------') re = func(*args,**kwargs) print('-----------') return re return wrapper @auth def sayhi(): print('hello!!!!') if __name__ == '__main__': sayhi()
带参数的装饰器
from functools import wraps def g_outer(name,age): def auth(func): @wraps(func) # 把原函数的魔法方法传递给wrapper def wrapper(*args,**kwargs): print('-----------') print(name) re = func(*args,**kwargs) print(age) print('-----------') return re return wrapper return auth @g_outer('ziyang',25) def sayhi(): print('hello!!!!') if __name__ == '__main__': sayhi()
多层装饰器--------------------------------------------------------------------------
from functools import wraps def add_xinghao(func): def wrapper(*args,**kwargs): print('************') re = func(*args,**kwargs) print('************') return re return wrapper def g_outer(name,age): def auth(func): @wraps(func) # 把原函数的魔法方法传递给wrapper def wrapper(*args,**kwargs): print('-----------') print(name) re = func(*args,**kwargs) print(age) print('-----------') return re return wrapper return auth @add_xinghao @g_outer('ziyang',25) def sayhi(): print('hello!!!!') ''' 多层装饰器相当于 1.sayhi = g_outer(sayhi) 2.sayhi = add_xinghao(sayhi) 最外层的先执行后结束 ''' if __name__ == '__main__': sayhi()