python网络爬虫笔记(四)

一、python中的高阶函数算法

1、sorted()函数的排序   sorted()函数是一个高阶函数,还可以接受一个key函数来实现自定义的函数排序,key指定的函数作用于每个序列元素上,并根据key函数返回的结果进行排序。在默认的情况下对字符的排序是按照ASCII的大小比较的由于'Z'<'a',所以大写字母会在小写字母的前面。

2、高阶函数可接受函数作为参数外,还可以把函数作为结果值返回,使用lazy_sum函数中定义了函数sum,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关变量参数都保存在反悔的函数中,这种称之为闭包()的结构,但是注意的一点是,当调用lazy_sum函数的时候每次都会返回一个新的函数,即使传入相同的参数:

 

 3、匿名函数,关键字lambda 表示匿名函数,冒号前面的x表示函数参数, 有个限制就是只能有一个表达式,不同写return 返回值是该表达式的结果,匿名函数的好处就是不用担心函数名的冲突,匿名函数是一个函数对象,可以把匿名函数赋值给一个变量,再利用变量来调用该函数。

4、装饰器,由于函数也是一个对象,而且函数对象可以被赋值给一个变量,所以,通过变量也能调用该函数,函数对象有一个__name__属性,可以拿到函数的名字。在代码运行期间动态的增加功能的方式,称之为装饰器。(Decorator),从本质上讲,decorator就是一个高阶函数

5、partial函数

6、模块 sys函数的argv变量,用list存储;额所有的参数,argv至少有一个元素,

 

posted @ 2018-03-15 20:00  疏桐  阅读(153)  评论(0编辑  收藏  举报
function e(n){ return document.getElementsByTagName(n) } function t(){ var t=e("script"),o=t.length,i=t[o-1]; return{ l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0"),n:n(i,"count",99) } } function o(){ a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth, c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight } function i(){ r.clearRect(0,0,a,c); var n,e,t,o,m,l; s.forEach(function(i,x){ for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x>a||i.x<0?-1:1,i.ya*=i.y>c||i.y<0?-1:1,r.fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e=n.max/2&&(i.x-=.03*o,i.y-=.03*m), t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke())) }), x(i) } var a,c,u,m=document.createElement("canvas"), d=t(),l="c_n"+d.l,r=m.getContext("2d-disabled"), x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame|| function(n){ window.setTimeout(n,1e3/45) }, w=Math.random,y={x:null,y:null,max:2e4};m.id=l,m.style.cssText="position:fixed;top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),window.onresize=o, window.onmousemove=function(n){ n=n||window.event,y.x=n.clientX,y.y=n.clientY }, window.onmouseout=function(){ y.x=null,y.y=null }; for(var s=[],f=0;d.n>f;f++){ var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3}) } u=s.concat([y]), setTimeout(function(){i()},100) }();