fn

python高阶函数、柯里化、装饰器、参数注解

匿名 (未验证) 提交于 2019-12-02 22:51:30
一、高阶函数 举例: def counter(base): def inc(step=1) base += step return base return inc 1、自定义sort函数 仿照内建函数sorted,自行实现一个sort函数(不使用内建函数),能够为列表元素排序 内建函数sorted函数是返回一个新的列表,可以设置升序或者降序,可以设置一个排序的函数 sorted函数的实现原理,扩展到map,filter函数的实现原理 方式一: def sort(iterable,reverse=False): ret = [] for x in iterable: for i,y in enumerate(ret): flag = x>y if reverse else x<y if flag: #找到大的就地插入 ret.insert(i,x) break else: ret.append(x) return ret print(sort([1,3,4,52,6,10]) 方式二: def sort(iterable,fn=lambda a,b:a>b): ret = [] for x in iterable: for i,y in enumerate(ret): if fn(x,y): #fn函数的返回值是bool ret.insert(i,x) break else: ret

自定义事件兼容处理对象

匿名 (未验证) 提交于 2019-12-02 21:53:52
var EventUtil={ addEvent:function(element,type,fn){ //兼容处理 //第三个参数为true时 在事件捕捉阶段处理 false是 在事件冒泡阶段处理 element.addEventListener(type,fn,false); } else if(element.attachEvent) //这个方法值只能在冒泡阶段处理事件 { element.attachEvent("on"+type,fn); } else{ element["on"+type]=fn; } }, removeEvent:function(element,type,fn){ if(element.removEventListener){ element.removeEventListener(type,fn); } else if(element.detachEvent){ element.detachEvent("on"+type,fn); } else{ element["on"+type]=fn; } }, getEvent:function(event){ return event||window.event; }, stopPropagation:function(event){ event.stopPropagation?event

.6-浅析express源码之Router模块(2)-router.use

匿名 (未验证) 提交于 2019-12-02 21:53:52
  这一节继续深入Router模块,首先从最常用的use开始。 router.use   方法源码如下: proto . use = function use ( fn ) { var offset = 0 ; var path = '/' ; if ( typeof fn !== 'function' ) { var arg = fn ; while ( Array . isArray ( arg ) && arg . length !== 0 ) arg = arg [ 0 ]; if ( typeof arg !== 'function' ) { offset = 1 ; path = fn ; } } var callbacks = flatten ( slice . call ( arguments , offset )); if ( callbacks . length === 0 ) throw new TypeError ( 'Router.use() requires a middleware function' ) for ( var i = 0 ; i < callbacks . length ; i ++) { var fn = callbacks [ i ]; if ( typeof fn !== 'function' ) throw new

JavaScript变量提升的理解

匿名 (未验证) 提交于 2019-12-02 21:53:52
先说三句总结性的话: let 的「创建」过程被提升了,但是初始化没有提升。 var 的「创建」和「初始化」都被提升了。 function 的「创建」「初始化」和「赋值」都被提升了。 所以,我们要注意,这三种变量提升,含义是不同的。 在进入一个执行上下文后,先把 var 和 function 声明的变量前置,再去顺序执行代码。 PS:作用域分为全局作用域和函数作用域,用var声明的变量,只在自己所在的所用域有效。 我们举例来看看下面的代码。 代码 1: console.log(fn); var fn = 1; function fn() { } console.log(fn); 相当于: var fn = undefined; function fn() { } console.log(fn); fn = 1; console.log(fn); 打印结果: 代码 2: console.log(i); for (var i = 0; i 相当于: var i = undefined; console.log(i); for (i = 0; i 打印结果: 代码 3: var a = 1; function fn() { a = 2; console.log(a) var a = 3; console.log(a) } fn(); console.log(a); 相当于: var a =

[Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080

匿名 (未验证) 提交于 2019-12-02 21:53:52
用touch事件的时候应该遇到过这个东东吧 documet.addEventListener("touchstart",function(){ }); [Violation] Added non-passive event listener to a scroll-blocking 'touchstart' event. Consider marking event handler as 'passive' to make the page more responsive. 翻译过来就是 违反:没有添加被动事件监听器来阻止'touchstart'事件,请考虑添加事件管理者'passive',以使页面更加流畅。 出现如上提示这可能是由于console的过滤器选择了Verbose 强迫症的我 上网百度了 一下 于是就有所了解 以前的监听器都是这样的 这里不细说 第三个参数还可以是对象 element.addEventListener("touchstart",fn, { capture: Boolean, passive: Boolean, once: Boolean} 它只有在fn里面的代码执行完之后才会知道到底要不要取消默认行为 这样等待的时间不就 } }); } catch(e){ } 这么看不得劲 挨张图片 我就说在这需要用知道的 就是当访问{} 的 passive 属性的时候

jQuery动画与特效

 ̄綄美尐妖づ 提交于 2019-12-02 21:46:04
一、显示与隐藏动画效果 1.显示hide()和隐藏show() 语法: 1 jQuery对象.show(duration,[fn]); 2 jQuery对象.hide(duration,[fn]); 3 /*其中duration是动画效果运行时间,可选填slow、normal、fast,对应的速度分别为600ms、400ms、200ms。 4 也可以直接填毫秒数,fn函数为回调函数,动作完成后调用此函数*/ 2.toggle()函数 语法: jQuery对象.toggle(); /*无参格式,在显示和隐藏之间切换*/ jQuery对象.toggle(true or false) ; /*带布尔值形式,为true时显示元素,否则,隐藏元素*/ jQuery对象.toggle(duration,[fn]); /*与show()函数用法类似*/ 二、淡入与淡出动画效果 1.淡入fadeIn()淡出fadeOut() 语法: jQuery对象.fadeIn(duration,[fn]); jQuery对象.fadeOut(duration,[fn]); /*本质上是改变元素的透明度*/ /*其中duration是动画效果运行时间,可选填slow、normal、fast,对应的速度分别为600ms、400ms、200ms。 也可以直接填毫秒数,fn函数为回调函数,动作完成后调用此函数*/ 2

JS面向对象

时光怂恿深爱的人放手 提交于 2019-12-02 19:46:12
一 面向对象的名词解释: 对象是一个容器,封装了属性(property)和方法(method) 属性:事物的特性; 方法:事物的功能; 对象:事物的一个实例; 原型:JS函数中中由prototype属性引用的一个对象,即原型对象(原型 ); 二 对象定义的两种方式 1 字面量的方式进行定义 1 var obj = { 2 name: "Tom ", 3 sex: " man", 4 age:19, 5 run:function(){ 6 console.log("一天跑一公里"); 7 } 8 } 2 使用 new Object() 进行定义 1 var obj = new Object(); 2 obj.name = "Tom "; 3 obj.sex = " man"; 4 obj.age = 19; 5 obj.run = function(){ 6 console.log("一天跑一公里"); 7 } 三. 类和对象 1 什么是类(Class)? 具有相同特性(数据元素)和行为(功能)的对象的抽象就是类 。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象行为的抽象,用操作名和实现该操作的方法来描述。 2类和对象的区别: 类(Class)是一个抽象的概念

jQuery 动画效果

空扰寡人 提交于 2019-12-02 16:53:06
目录 动画效果 1. 基本效果 2. 滑动效果 3 淡入淡出效果 4 自定义动画 5 动画控制 6 设置 动画效果 1. 基本效果 show([s,[e],[fn]]) 显示隐藏的匹配元素 hide([s,[e],[fn]]) 隐藏显示的元素 toggle([s],[e],[fn]) 如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的 参数详解 speed : 三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000) easing : (Optional) 用来指定切换效果,默认是"swing",可用参数"linear" fn : 在动画完成时执行的函数,每个元素执行一次。 2. 滑动效果 slideDown([s],[e],[fn]) 通过高度变化(向下增大)来动态地显示所有匹配的元素 slideUp([s,[e],[fn]]) 通过高度变化(向上减小)来动态地隐藏所有匹配的元素 slideToggle([s],[e],[fn]) 通过高度变化来切换所有匹配元素的可见性 参数详解 speed : 三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000) easing : (Optional) 用来指定切换效果,默认是"swing",可用参数

【论文阅读】Non-locally Enhanced Encoder-Decoder Network for Single Image De-raining

大兔子大兔子 提交于 2019-12-02 15:10:57
概述 户外监控设备经常捕捉带有雨纹(rain streak)的图像,这可能会严重影响一些现有电脑视觉系统的表现。因此,自动去除雨纹成为计算机视觉和多媒体领域的重要研究课题,并已成功应用于无人驾驶技术和基于内容的图像编辑等领域。 对于单个图像的去雨处理,现有的基于深度学习的方法要么专注于网络的入口和出口,将输入图像分解为高和低频率信息,使用残差学习减小映射范围,要么引入级联学习(cascaded learning),将去雨分解为多阶段任务。这些方法将卷积神经网络视为封装的端到端映射模块,没有深入探讨神经网络设计的合理性和优越性。 这篇论文发表于ACM MM 2018,提出一种非局部增强的编码器解码器网络架构,用于增强特征表达和空间相关学习。该架构包含一个嵌入池索引(pooling indices)的编解码器网络,由一系列非局部增强的密集块(dense block)组成,不仅充分利用了所有卷积层的层次特征,而且能够很好地捕获长距离依赖和结构信息,有效学习日益抽象的特征表示。 该方法同时做到有效去除各种密度的rain streak,完美保留图像的细节。 论文链接 背景知识 Pooling indices 在Decoder中需要针对最大池化之后的feature map进行上采样。上采样,顾名思义就是池化的反向处理,这个过程中存在着不确定性

函数声明与函数表达式

烂漫一生 提交于 2019-12-02 14:05:41
函数是JavaScript非常重要的一部分,它被称为第一等公民,可以看出它的地位是何等尊贵何等重要。根据我一贯的作风,会深入原理性的东西,那这篇文章主要来挖掘函数声明与函数表达式相关知识。 在JavaScript中定义一个函数有四种方式 函数声明 函数表达式 ES6里箭头函数 new Function() 函数声明 语法 function 函数名(参数){ 要执行的代码 } 调用 函数名(参数) 函数名.call(函数名,参数) 函数名.apply(函数名,[参数]) new 函数名(参数) 定时器 把函数声明变成函数表达式再调用 ES6里的模版字符串 function fn(text){ console.log(text); } fn('直接调用'); fn.call(fn,'用call调用'); fn.apply(fn,['用apply调用']); new fn('用new调用'); setTimeout(fn('用定时器调用')); (function fn(text){ console.log(text); })('转成函数表达式后调用'); fn`用模版字符串调用`; //ES6里语法 函数表达式 语法 var/let/const 变量=function(参数){ 要执行的代码 } 调用 函数名(参数) 函数名.call(函数名,参数) 函数名.apply(函数名,[参数