[TOC]
先导知识
1.作用域
L-E-G-B范围查找
2.高阶函数
函数名作为参数输入
函数名作为返回值
3.闭包
如果一个内部函数里,对外部环境的变量进行引用,那么这个内部函数就是一个闭包
闭包=内部函数+定义函数时的环境
装饰器(开放封闭原则)
- 在不修改原有代码的情况下,为被装饰的对象增加新的功能或者附加限制条件或者帮助输出。
@dec
def func():
pass
1.装饰器函数
import time
def show_time(func):
def wrapper():
start_time=time.time()
func()
end_time=time.time()
print('spend %s'%(end_time-start_time))
return wrapper
@show_time
def foo():
print('hello foo')
time.sleep(2)
#foo=show_time(foo)
foo()
show_time函数就是一个装饰器函数,它为原始函数foo添加了一个运行时间的功能
在原始函数上方用@show_time来代替foo=show_time(foo)
2.装饰器参数
在装饰器函数外包上一层函数并传入参数,让装饰器函数使用外层函数的参数形成闭包,根据参数决定是否使用功能。
import time
def logger(falg=''):
def show_time(f):
--snip--
if flag=='true':
print('11111111')
return show_time
@logger('true')
def foo():
--snip--
@logger()
def add():
--snip--
这样利用装饰器参数,就可以让所有函数都执行show_time,而只有传参数‘true’的函数才能打印1111111
pycharm新建模板添加作者时间等信息
1.file--->settings
2.Editor--->Color&Style--->File and Templates---->Python---->Script
3.添加
##!/usr/bin/python3
# -*- coding: utf-8 -*-
# @TIME : ${DATE} ${TIME}
# @Author : kaiser
# ....
网友评论