一、什么是装饰器: 装饰器本身就是函数,功能是为其他函数附加功能。 二、装饰器遵循的原则: 1、不修改被修饰函数的源代码 2、不改变被修饰函数的调用方式 三、实现函数装饰器知识储备 修饰器 = 高阶函数 + 函数嵌套 + 闭包 示例:有修饰器和没有修饰器的区别: 四、高阶函数的定义:(查看 http ...
分类:
编程语言 时间:
2018-03-25 17:02:00
阅读次数:
249
一、声明为const的原因: 把函数不会改变的形参定义成普通的引用会带给函数的调用者一种误导,即函数可以修改它的实参的值; 限制函数所能接受的实参类型,如不能把const对象、字面值或者需要类型转换的对象传递给普通引用的实参。 举例:对于附录中的“find_char函数”,由于我们把其中的strin ...
分类:
其他好文 时间:
2018-03-24 11:38:04
阅读次数:
171
C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可 ...
分类:
编程语言 时间:
2018-03-21 15:07:13
阅读次数:
189
cp : http://blog.csdn.net/x_perseverance/article/details/78897637 每一个函数被调用时,都会为函数开辟一块空间,这块空间就称为栈帧。 首先,我们了解一下不同种类的寄存器: (1)eax,ebx,ecx,edx :通用寄存器 (2)ebp ...
分类:
移动开发 时间:
2018-03-12 18:52:59
阅读次数:
223
这次我们要透过一个简单的函数swap深入理解函数传参的本质以及在C++中如何选择传参方式。 先来看第一段程序: 通过main函数的调用,我们发现x,y并未实现交换: 原因是整形x和y在函数swap内为按值传递,按值传递时,函数不会访问当前调用的实参。函数处理的值是它本地的拷贝,这些拷贝被存储在运行栈 ...
分类:
编程语言 时间:
2018-03-11 17:26:59
阅读次数:
155
#coding=utf-8 #装饰器本质为函数(用来装饰其他函数)为其他函数添加附加功能 #原则:1、不能修改被装饰函数的源代码 #2、不能修改函数的调用方式 #实现装饰器 #1、函数即变量 #2、高阶函数 #a、把一个函数名当做实参传入另一个函数 #b、返回值中包含函数名(不修改函数的调用方式) ... ...
分类:
其他好文 时间:
2018-03-11 02:39:43
阅读次数:
227
1、装饰器1.1、装饰器定义装饰器:定义:本质上是函数,(装饰器的功能:装饰其他函数),就是为其他函数添加附加的功能。原则:1.不能修改被装饰的函数的源代码2.不能修改被装饰的函数的调用方式简单装饰器程序演示:计算test1函数的运行时间importtimedeftimemer(func):#使用高阶函数定义装饰器defwarpper(*args,**kwargs):#装饰器的函数,函数体为装饰器
分类:
编程语言 时间:
2018-03-05 18:09:20
阅读次数:
182
day18 JavaScript事件基础 事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。 HTML事件 直接在HTML元素标签内添加时间,执行脚本。 语法:<tag 事件="执行脚本" ></tag> 功能:在HTML元素上绑定事件。 说明:执行脚本可以是一个函数的调用。 this是对该DOM ...
分类:
编程语言 时间:
2018-02-24 19:22:42
阅读次数:
179
装饰器: 定义:本质是函数,(装饰其他的函数)就是为其他函数添加附加功能 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 实现装饰器的知识储备 1,函数即“变量” 2,高阶函数 a:把一个函数名当做实参传给另一个函数 b:返回值包含函数名 3,嵌套函数 高阶函数+嵌套函数 ...
分类:
编程语言 时间:
2018-02-22 19:40:12
阅读次数:
247
关于构造函数的调用顺序: 1、继承关系 2、从属关系 3、static声明的从属关系 关于拷贝构造函数的声明: classname(const classname & rhs) #include <iostream> using namespace std; class Component { pu ...
分类:
编程语言 时间:
2018-02-22 16:43:52
阅读次数:
195