python's twelth day for me
闭包:
内层函数对外层函数的变量(非全局变量)的引用。
python 遇到闭包,有一个机制,会开辟一个空间,将闭包中的全部变量放入其中。且不会随着函数的结束而关闭。
闭包的完美体现:装饰器。
打印函数的注释:
def func1():
'''
此函数是完成登陆的功能,参数分别是...作用。
:return:返回值是登陆的成功与否(True,False)
'''
print(666)
print(func1.__name__) #打印函数名
print(func1.__doc__) #打印注释
return True
func1() #
# func1
#
# 此函数是完成登陆的功能,参数分别是...作用。
# :return:返回值是登陆的成功与否(True, False)
放在函数执行外也可以打印:
def func():
'''
此函数是完成登陆的功能,参数分别是...作用。
:return:返回值是登陆成功与否。(True,False)
'''
print(666)
return True
func()
print(func.__name__)
print(func.__doc__) #
# func
#
# 此函数是完成登陆的功能,参数分别是...作用。
# :return:返回值是登陆成功与否。(True,False)
打印日志:
from functools import wraps
def wrapper(f): # f = func1
@wraps(f)
def inner(*args,**kwargs): # 聚合
'''执行函数之前的相关操作'''
ret = f(*args,**kwargs) #打散 1,2,3
'''执行函数之后的相关操作'''
return ret
return inner
@wrapper #func1 = wrapper(func1) func1 = inner
def func1():
'''
此函数是完成登录功能,参数分别是...作用。
:return: 返回值是成功与否(True,False)
'''
print(666)
return True
func1()
print(func1.__name__)
print(func1.__doc__) #
# func1
#
# 此函数是完成登录功能,参数分别是...作用。
# :return: 返回值是成功与否(True,False)
多个装饰器装饰一个函数:
def wrapper1(func): #func == f 函数名
def inner1():
print('wrapper1,before func') #
func()
print('wrapper1,after func') #
return inner1 def wrapper2(func):
def inner2():
print('wrapper2,before func') #
func()
print('wrapper2,after func') #
return inner2 @wrapper2 # 后 # f = warpper2(f) 里面的f == inner1 外面的 f == inner2
@wrapper1 # 先 # f = wrapper1(f) 里面的f == 函数名 f 外面的 f == inner1
def f():
print('in f') #
f() # wrapper2,before func
# wrapper1,before func
# in f
# wrapper1,after func
# wrapper2,after func
多个装饰器装饰一个函数的打印顺序:

可引用全局变量,但不能修改,用global 才能修改。
a = 6
def func1():
global a
a = a+1
print(a)
func1()
用标志位,来决定是否执行装饰器:
import time
def timer(*args,**kwargs):
def wrapper(f):
def inner(*args,**kwargs):
if flag:
start_time = time.time()
ret = f(*args,**kwargs)
time.sleep(0.3)
end_time = time.time()
print('此函数的执行效率%f' % (end_time-start_time))
else:
ret = f(*args,**kwargs)
return ret
return inner
return wrapper
flag = True
@timer(flag) #两步: . timer(flag) --> wrappen . @wrapper
def func1():
print()
@timer(flag)
def func2():
print()
func1()
func2()
python's twelth day for me的更多相关文章
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 使用Python保存屏幕截图(不使用PIL)
起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...
- Python编码记录
字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...
- Apache执行Python脚本
由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...
- python开发编译器
引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...
随机推荐
- python fire库的使用
一. 介绍 fire是python中用于生成命令行界面(Command Line Interfaces, CLIs)的工具,不需要做任何额外的工作,只需要从主模块中调用fire.Fire(),它会自动 ...
- iOS唯一标示符引导
在2013年3月21日苹果已经通知开发者,从2013年5月1日起,访问UIDID的应用将不再能通过审核,替代的方案是开发者应该使用“在iOS 6中介绍的Vendor或Advertising标 ...
- 25-THREE.JS 绘制线框样式几何图形的材质 线材质
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- opencv:图像的创建和储存
示例代码: #include <opencv.hpp> #include <vector> using namespace std; using namespace cv; v ...
- LoadRunner压力测试实际运用的使用方法
LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具.通过以模拟上 千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个 企业架构进行测试. 方 ...
- mongodb倒排索引
这周主要都花时间搞mongodb上了,业务场景是上游产出几个城市的全量道路code值,每个城市的数据量大概在100w~200w之间,每条数据对应好几个feature,形如: { code: 0, fe ...
- L130
Trump Administration Backs Asian-Americans in Harvard CaseThe United States Justice Department on Th ...
- Git常用命令以及用法
一 如何让单个文件回退到指定的版本 1. 进入到文件所在文件目录,或者能找到文件的路径 查看整个目录的修改记录 git log . 2. 回退到指定的版本 git reset f7a22076 ...
- Wix是什么?
Wix是Windows Installer XML的简称,其通过类XML文件格式来指定了用于创建Windows Installer安装包数据库的元素.关于Wix的详细介绍,http://wixtool ...
- 在Wifi网络中嗅探明文密码(HTTP POST请求、POP等)
全世界,现在大约50%的网站没有使用SSL加密,天朝尤其多. 我们都知道通过HTTP发送的数据都是明文,没有使用任何加密,即使是在数据敏感的登录页面. 本文的目的是:如果你在不熟悉的网络环境中,要注意 ...