当前函数的作用域; 2.任何外围作用域; 3.包含当前代码的模块的作用域(也叫全局作用域, globle scope) 4.内置作用域(python内置的,包含len、str等函数的作用域) 找不到变量时抛 python3,nonlocal声明变量表示赋值时在上层作用域中查找该变量,不会延伸到全局作用域 python2,没有nolocal。可以用一个[]中的下标,赋值来替代。 pop检查,不符合报错 三、 类部分 第22条 尽量用辅助类来维护程序的状态,而不要用字典或元组 类内部用字典或列表做底层数据结构,嵌套超过2层就要考虑重构了。使用辅助类来简化逻辑。 第25条 用super初始化父类 python2 super(ConcretClass, self).__init__(paras) python3 super(__class__, self). Python2: class Meta(type): def __new__(meta, name, bases, class_dict): class MyClasspython2(object
读书笔记 | Design Rot -1 管理的事情不太懂就不多说了,还是接着聊Design。
因为我们在每个位置插入元素的概率是一样的,所以平均情况时间复杂度为 (1+2+...n)/n=O(n)。 如果数组中存储的数据并没有任何规律,数组只是被当作一个存储数据的集合。 我们只需要将 c 放入到 a[5],将 a[2]赋值为 x 即可。最后,数组中的元素如下: a,b,x,d,e,c。 4个整数刚好能满足8字节对齐 所以i的地址恰好跟着a2后面 gcc有一个编译选项(-fno-stack-protector)用于关闭堆栈保护功能。
比如: var man = { hands:2, legs:2, heads:1 } //代码的其他部分 //将一个方法添加到所有对象上 if(typeof Object.prototype.clone // 反模式 for(var i in man) { console.log(i + ':' + man[i]) } 或者,这样才是你想要的: var man = { hands:2, legs:2, heads:1 } //代码的其他部分 //将一个方法添加到所有对象上 if(typeof Object.prototype.clone === 'undefined 2、如果检查了自定义的属性或方法并未存在时。或者为了统一不同浏览器或相同浏览器的不同版本而进行的兼容时,前提是要检查是否存在。3、文档记录,并与团队沟通清楚。 在幕后,JavaScript仍然不得不评估和执行以程序代码方式传递过来的字符串: // 反模式 setTimeout('myFunc()',1000); setTimeout('myFunc(1,2,3
都知道在传递比较复杂的参数的时候,最好用const &,如果要支持左值应用和右值引用,那么就需要写一对函数支持重载了:
Array.isArray([]) //true Array.isArray(bull) //false Array.isArray(arguments) //false 数组方法 forEach() [1,2,3 ].forEach(function(v){ console.log(v) }) // 1,2,3 filter() [1,2,3].filter(function(v){ return v<3 }) //[1,2] map() [1,10,20].map(function(v){ return v*3 }) // [3,30,60] 字符串方法 要移除字符串首末的空格 ' hello
var setup = function () { alert(1); return function() { alert(2); }; }; // 使用setup 函数 var my = setup(); // alerts 1 my(); // alerts 2 // 由于setup()包装了返回函数,它创建了一个闭包,可以使用这个闭包存储一些私有数据, //
比如: var man = { hands:2, legs:2, heads:1 } //代码的其他部分 //将一个方法添加到所有对象上 if(typeof Object.prototype.clone // 反模式 for(var i in man) { console.log(i + ':' + man[i]) } 或者,这样才是你想要的: var man = { hands:2, legs:2, heads:1 } //代码的其他部分 //将一个方法添加到所有对象上 if(typeof Object.prototype.clone === 'undefined 2、如果检查了自定义的属性或方法并未存在时。或者为了统一不同浏览器或相同浏览器的不同版本而进行的兼容时,前提是要检查是否存在。3、文档记录,并与团队沟通清楚。 在幕后,JavaScript仍然不得不评估和执行以程序代码方式传递过来的字符串: // 反模式 setTimeout('myFunc()',1000); setTimeout('myFunc(1,2,3
var setup = function () { alert(1); return function() { alert(2); }; }; // 使用setup 函数 var my = setup(); // alerts 1 my(); // alerts 2 // 由于setup()包装了返回函数,它创建了一个闭包,可以使用这个闭包存储一些私有数据, //
2.1:经验误差与过拟合 通常我们把分类错误的样本数占样本总数的比例称为“错误率”,相应的。精度即“1-错误率”。更一般的,我们把学习器的实际预测输出和样本的真实输出之间的差异称为“误差”。 *需要注意,这里所说的误差均是指的是误差期望。 学习器在训练集上的误差称为“训练误差”或者“经验误差”,在新样本上的误差称之为“泛化误差”。 我们现在努力做得是把经验误差最小化。我们实际希望的,是在样本上能表现出来的很好的学习器。为了达到这个目的,应该从训练样本上尽可能的学出适用于所有潜在样本的“普遍规律”,这样才能在
第四章 完成会计循环 学习目标CAP 概念(Conceptual) C1 为什么临时性账户每期都要结清 C2 会计循环的各个步骤 C3 分类资产负债表及其编制 程序(Procedural) P1 编制工作底稿并解释其作用 P2 描述并编制结账分录 P3 解释编制结账后的试算平衡表 一个重要的工具-工作底稿 工作底稿的作用 运用工作底稿 工作底稿的应用和分析 预测财务报表
子查询虽然是一种嵌套查询的形式,不过我们依然可以依据子查询是否执行多次,从而将子查询划分为关联子查询和非关联子查询。
(ratings[band1] - avg)**2 dem2 += (ratings[band2] - avg)**2 return num / (sqrt(dem1) * sqrt (dem2)) 相似矩阵预测: ? & rating2 in that set of ratings: for (item2, rating2) in ratings.items(): #value of complex dic is dev self.deviations[item][item2] += rating - rating2 ratings[item2] /= self.frequencies[item][item2] # test code for ComputeDeviations(self) #r = recommender
2. 具有一致性。 3. 预见性好。 4. 看起来如同一个人编写。 5. 有文档。 但是一旦在调用函数后,在外部空间使用了另外的result变量: function sum(x, y) { result = x + y; return result; } sum(1, 2) var a = '1'; b = 2; (function () { c = 3; }()) delete a; delete b; delete c; console.log(typeof 比如: function func() { var a = 1, b = 2, sum = a + b, obj = {}, i,
在限定数组项的逗号后面:var a =[1, 2, 3]; 对象属性的逗号之后和将属性名和属性值分开的冒号之后:var o = {a: 1, b: 2}; 分隔开函数中各个参数的逗号之后:myFunc(
2.该比赛并不是拼谁开始跑得快,也不是拼谁更有力气的。 3.心态越急,反而跑得越慢。 软件开发的一个核心特点:要想跑得快,先要跑得稳。 过度自信只会使得重构设计陷入和原项目一样的困局中。 第2章 两个价值维度 对于每个软件系统,我们都可以通过行为和架构两个维度来体现它的实际价值。 行为价值 软件系统的行为是其最直观的价值维度。
Sale.decorators.money = { getPrice: function () { return '$' + this.uber.getPrice().toFixed(2) Sale.decorators.cdn = { getPrice: function () { return 'CDN$ ' + this.uber.getPrice().toFixed(2) } }; Sale.decorators.money = { getPrice: function (price) { return "$" + peice.toFixed(2) } }; Sale.decorators.money = { getPrice: function (price) { return "$" + price.toFixed(2)
2. 具有一致性。 3. 预见性好。 4. 看起来如同一个人编写。 5. 有文档。 但是一旦在调用函数后,在外部空间使用了另外的result变量: function sum(x, y) { result = x + y; return result; } sum(1, 2) var a = '1'; b = 2; (function () { c = 3; }()) delete a; delete b; delete c; console.log(typeof 比如: function func() { var a = 1, b = 2, sum = a + b, obj = {}, i,
2.Consider a builder when faced with many constructor parameters 大意为当你面对大量的构造参数时考虑使用Builder 静态工厂和构造器都有一个限制 constructor pattern )“的办法,就是先提供必须要的选项参数作为最简单的构造方法,然后把非必须的选项参数逐渐加上去构成新的构造方法,不考虑组合的问题 举个例子,现在你的构造方法有2个必须的参数 而构造方法只能有一个变量参数,因为builder使用分离的多个方法来设置相应的参数(解释一下,构造方法,或者说方法的变量参数只能是一个 比如 A(int a){},就不能是A(int a1 a2 a3
2 大促秒杀活动催生缓存技术的高度使用 需求:平台如何完美支持大促秒杀场景是一个体系工作,牵涉到应用架构设计的合理、平台稳定性报障、极强的系统扩展能力等多个方面。