day_5.24py
世间万物皆对象!
闭包就是内部函数中对enclosing作用域的变量进行引用。
装饰器
最开始就说,这篇博客始于闭包,终于闭包,所以装饰器不多说,只说四句话:
1.装饰器就是对闭包的使用;
2.装饰器用来装饰函数;
3.返回一个函数对象,被装饰的函数接收;
4.被装饰函数标识符指向返回的函数对象
多个装饰器,完成包裹数据
'''
2018-5-24 13:56:08
忘了关影子系统,本地代码丢失了一两天,
还好保存到博客园了,影子系统桌面没提示 草WIn10
继续代码走起
装饰器!!
@ python特有的
'''
# python不告诉你有重名函数
# def test1():
# print("test1")
# def test1():
# print("test2")
# 只要是名都可以被改,名字仅仅是引用 # def w1(func):
# #定义一个闭包
# def inner():
# print("---正在验证权限---")
# func()
# return inner
# @w1 #f1 = w1(f1)
# #等价于给人一种感觉,在没有修改f1()的前提下完成验证,这就是装饰器
# def f1():
# print("----f1---")
# @w1
# def f2():
# print("----f2----")
#
# f1()
# f2()
# # 多个装饰器,定义函数,完成包裹数据
# def makeBold(fn):
# def wrapped():
# print("---1--")
# return "<b>" +fn()+ "</b>"
# return wrapped
# #定义函数:完成包裹数据
# def makeItalic(fn):
# def wrapped():
# print("--2--")
# return "<i>" + fn() +"</i>"
# return wrapped
# ''' 装饰器什么时候进行装饰'''
# #只要python解释器执行到这行代码时候就已经装饰完了
# @makeBold
# @makeItalic
# def test3():
# print("----3----")
# return "hello world-3"
# ret = test3()
# #在调用f1之前,已经进行装饰了
# print(ret)
'''带参数的装饰器'''
# def func(functionName):
# print("---func--1---")
# def func_in(*args,**kwargs):#如果a,b没有定义,那么会到导致16行的调用失败
# print("----func_in--1-")
# functionName(*args,**kwargs)#如果没有把a,b当做实参进行传递,那么会导致调用12行的函数失败
# print("---func_in--2-")
# print("----func-2-")
# return func_in
# @func
# def test(a,b,c):
# print("-----test-a=%d,b=%d,c=%c---"%(a,b,c))
#
# @func
# def test2(a,b,c,d):
# print("------test-a =%d,b=%d,c%d,d=%d----"%(d,b,c,d))
#
# test(11,22,33)
# test2(44,55,66,77)
'''装饰器对有返回值得函数'''
def func(functionName):
print("--func_in--1------")
def func_in():
print("--func_in--1------")
#保存返回的"haha"
xxxx = functionName() #z增加了一个变量存方法引用就可以解决返回值问题
print("-----func_in---2")
return xxxx
print("--func_in--2------")
return func_in
@func
def test():
print("----test----")
return "haha"
ret = test()
print("test return value is%s"%ret)
day_5.24py的更多相关文章
- day_5字符串和列表的各种操作方法
字符串类型: 字符串的定义是可以有多种引号嵌套 定义字符串是以开头的引号然后匹配和第一个引号相同的引号,所以当字符串中间出现和第一个引号相同的引号就会出错,这个时候就可以选择别的引号进行创建字符串,或 ...
- day_5.29 网络编程QQDemo.
2018-5-29 16:58:13 明天回学校玩几天给郭星辰过生日 实现一个QQDemo (多线程完成,因为那部分视频损坏没看) ''' from threading import Thread f ...
- day_5.28 py网络编程
端口 socket简介: socket为一个类 s接收的是返回的对象引用 2018-5-28 15:52:47 开始进行网络编程 udp 套接字 encode() 编码 decode() 解码 ' ...
- day_5.27python网络编程
开始进行python网络编程2018-5-27 20:27:30 Tcp/Ip协议
- day_5.27py
生成器:send() next() send 和next都可以把生成器向下走,但是send可以传入个参数 ''' 周末继续py 下周回学校过郭星辰生日,还得回来再复查一下 2018-5-27 16: ...
- day_5.26python面试重点
列表生成式: ''' 2018-5-26 19:40:58 生成器(generator):在Python中,这种⼀边循环⼀边计算的机制. ''' # 第一种实现 :只要把⼀个列表⽣成式的[ ]改成( ...
- day_5.26python动态添加属性和方法
python动态添加属性和方法 既然给类添加⽅法,是使⽤ 类名.⽅法名 = xxxx ,那么给对象添加⼀个⽅法 也是类似的 对象.⽅法名 = xxx '''2018-5-26 13:40:09pyth ...
- day_5.25py
作用域
- day_5.22 py
#!/usr/bin/env/python #-*-coding:utf-8-*- ''' 私有化 __相当于prevate 外部不能直接调用,只能通过set get方法用 property ''' ...
随机推荐
- Linux终端记录神器
我们在调试程序的时候,免不了要去抓一些 log ,然后进行分析.如果 log 量不是很大的话,那很简单,只需简单的复制粘贴就好.但是如果做一些压力测试,产生大量 log ,而且系统内存又比较小(比如嵌 ...
- SpringMVC+Thymeleaf +HTML的简单框架
一.问题 项目中需要公众号开发,移动端使用的是H5,但是如果不用前端框架的话,只能考虑JS前端用ajax解析JSON字符串了.今天我们就简单的说下前端框架Thymeleaf如何解决这个问题的: 二.开 ...
- 启动vmware虚拟机报错:“无法获得VMCI驱动程序的版本:句柄无效”
启动vmware虚拟机的时候报错: 找到对应虚拟机的文件夹路径: 用记事本打开CentOS 64位.vmx,找到这么一行: vmci0.present = "TRUE" 把TRUE ...
- SqlDateTime overflow / SqlDateTime 溢出
Error - SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM SqlDat ...
- Linux-文件描述符的本质及与文件指针的区别
文章参考:文件描述符的本质.文件描述符和文件指针的区别.文件描述符fd和文件指针flip的理解 推荐:task_struct 和文件系统的关系 系统中文件相关表 右侧的表称为i节点表,在整个系统中只有 ...
- Android——SeekBar(拖动条)相关知识总结贴
Android进度条(ProgressBar)拖动条(SeekBar)星级滑块(RatingBar)的例子 http://www.apkbus.com/android-51326-1-1.html A ...
- java 自动化测试平台构建思想
很多人迷信于自动化测试平台,认为这玩意是万能的,对于测试人员,不需要写代码,只需要在平台上选择一下,输入一点参数,就能达到测试的目的.想法是不错的,但关键在于实现这个平台的过程,这个就需要一个WEB开 ...
- String为什么是不可变的?
面试官Q1:请问为什么String是不可变的,能谈谈吗? 我们知道不管是面试初级.中级还是高级Java开发工程师,String永远都是一个绕不开的话题,而且问的问题也是各不相同,下面我们从几个角度来看 ...
- Hyper-V 怎样拷贝文件至虚拟硬盘并附加到虚拟机上
对于大文件来说,通过远程桌面拷贝是件麻烦的事情,虽然简单,但速度受限太多,不推荐使用. 我工作中对于大文件的拷贝,通过创建一个新的虚拟硬盘(VHD),再把大文件拷贝至虚拟硬盘中,最后附加到虚拟机上. ...
- TestNG源代码分析:依赖管理的实现
TestNG源代码分析:依赖管理的实现 2018-03-19 1 背景 当case之间有依赖关系,有依赖关系的case,它们的执行顺序是有限制的.TestNG提供了依赖管理功能 2 基础理论 这个执行 ...