如何通俗的解释闭包的概念(转)

假设你现在有一个函数 f (x) = a + x

这个函数是不完整的,比如 f (1) = a + 1 你还差一个问题: a 是多少?

有两个方法回答这个问题

第一种叫“动态作用域”,a的值决定于函数调用时上下文中a的值,比如

a = 1;
v=f(1) ; 这里v为2

动态作用域的问题是,函数每一次调用相同的参数未必返回相同的值,其返回值还取决于上下文的某些值

第二种是“词法作用域”,a的值取决于函数定义时上下文中的值

g (a) = lambda (x) a + x;
f = g(2)

这里函数g返回一个和上面函数f形式一样函数,a在此处为2,那么执行

a = 1;
v=f(1) ;这里v为3

因为f要“记住”自己定义时a的值为2,所以实现时

f (x) = a + x 和 a = 2 被打包在一块,被称为“闭包”,意思是它是完整独立的,仅仅依靠调用时参数求值,不再依赖调用时的上下文

晕,写完以后才发现我也写了不少…

(转载自知乎)

scheme的一个简单计算函数

最近几天在逛大神blog看了王垠的blog,里有有篇“怎样写个解释器是用scheme实现的。

刚好我最近也在看sicp先实现一个计算函数QQ图片20150608133856用match语句匹配俩个可能一个为该函数接受单个数字返回单个数字,一个可能是接收一个组合式'(‘op ,e1 ,e2)    op代表了运算符 e1, e2代表应用的数据 ‘(+ 1 2)QQ图片20150608135730有了这个这个方法我们可以做许多的新的例子比如QQ图片20150608142027要把组合式的运算符放在中间只需改变op的位置。要改成三个数运算QQ图片20150608144750可以尝试自己各种修改

大学生创业?(naive)

我曾看见有许多人想着创业创业创业,更甚大学不学习一门脑子想着创业把自己的理想就变成创业成功。但是在我看来这些人要么是懒惰无比,要么是鸡汤喝多了天真烂漫,成天坐着出任CEO走上人生巅峰的梦。

现在再来说说创业,为什么我觉得把理想和目标定在大学期间创业成功是非常naive的行为呢?其实结果显而易见就是三个字对于百分之99.99999999998的大学生来说  “不可能” 当然也有幸运的百分之0.000000000001但那些人不是在哈佛就是在mit等世界排名靠前的大学。我觉得一个人不能把有非常大运气成分才能成功的东西当作理想,大学创业就是其中之一,靠得是百分之65的运气和百分之15的队友百分之10的行动力还有百分之5的idea.组成。那些世界top大学的大学生之所以能成功便是占了队友行动力和idea的加成,想想自己的队友行动力idea占的到吗,所以说我觉得买彩票更好。

有些人又说了“我身边也有人创业成功啊”,我只能。。。。。。。。你说的是做生意继承家业当然行,有钱烧当然行。还有些小打小闹也算创业?好好学习等毕业后你会发现当时小打小闹拼死拼活赚的钱到不了毕业后的一个月月薪,所以说整天想着创业的人要么懒惰,要么天真。

当然我并不是反对大学创业,是反对一些懒惰和天真的想法罢了。当机遇来了抓住时机才是聪明人的选择,也有在普通大学创业成功者但我想他们在大学期间绝不会有这种懒惰和天真的想法,而是机会来了而进行尝试从而成功。

sicp用scheme实现八皇后

d1a20cf431adcbef8c2f33e5adaf2edda3cc9f3e八皇后问题:

在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

在sicp的第二章有一个八皇后的问题QQ图片20150601232700详见(计算机程序的构造和解释85页)我一开始是理解为在每个棋盘上放置一个皇后然后进行筛选,但问题是问总共有多少种摆法,进行筛选的话就只能得出一个结果。苦苦冥想了一天还是无果,第二天终于准备把程序输入电脑里直接查看是怎么摆皇后进行筛选这是(4×4的表格)QQ图片20150601233650!!原来是把每一种可能进行遍历然后筛选。书上讲的实在迷糊。

到目前为止我看sicp一直都是只看没输代码的,现在讲讲scheme编程环境的设置如果是开始想进行小程序的实验用  叫做Petite Chez Scheme的解释器 http://scheme.com/download 下载地址但是这个解释器报错非常不清楚如果想进行上面的八皇后的实验 推荐用:

Racket  下载地址为 http://racket-lang.org  sicp上的习题用这个解释器就能运行大部分了。

当python爬虫遇到url上有中文时

今天准备捣鼓个豆瓣爬书爬虫,但QQ图片20150525210658遇到了这样的URL中间有个中文,这个容易我曾经有学过爬虫知道有个,urllib.quote 这个方法可以完美解决这个问题,但是编码却不正确 转到的是 %B1%E0%B3%CC’  而豆瓣上的是 %E7%BC%96%E7%A8%8B 这让我十分疑惑,还好巡查不久便知道问题出在哪了。问题出在编码上由于windows下输入默认是gbk 编码所以转的是这个 %B1%E0%B3%CC’QQ图片20150525211132先将gbk转换为unicode然后再转换为utf-8 就可以输出 %E7%BC%96%E7%A8%8B了。完美解决这个问题。

python爬虫模拟登陆,及正则。

最近准备返回琢磨爬虫,经过网站后端稍微多点代码的历练果然对代码的理解能力强了许多。这回看了一些大大的博客资料搞懂了爬虫的基本登陆和正则。

首先爬虫的基本爬一个网站的Html

QQ图片20150521171236这是基本的帮大家回顾下,基本的爬虫原理可以google查看大神博客来学习,这里就不多做赘述。

账号模拟登入:

QQ图片20150521171542这里以知乎为例子1-11行分别是输入账号信息和爬知乎的基本HTML。 这里我们利用wireshark抓包知道想要模拟登入知乎需要提交四个信息{_xsrf , email, password, rememberme} _xsrf需要从html源码中抓取或者也可以直接在源码中查看,11-17行我们从源码中抓取了_xsrf。接着输入知乎的登录界面的url,然后输入头部信息和需要post的四个信息仔细研究源码就完成了基本的登录。

编程的俩个状态

我学编程总有俩个状态,一个是看到自己每天都有学东西时的沾沾自喜,一个是看不见大神与自己距离的迷茫无望。

很明显我现在正处于后面这个状态,看看大神们随手上万行和自己的几百行遍压力山大。不断自我怀疑 是不是太笨了,是不学错东西了,是不是太懒了,是不是没有天赋。明知编程最忌浮躁却不可控制,导致一整天什么都没有进入脑袋。每当进入这种状态,想想我学习的时间回顾学习的过程,从看到100行的pygame就震惊到现在学习写个近千行的网站后台。其中穿插了C ,爬虫,基本的git操作、vim。走了不少路,再看看大神的博客每个都有经历时间磨练的路程遍释然。

每个月都得浪费几天迷茫,这也许便是男人的月经期。

最爱日剧(日影?)大推荐

本文章适合无聊想看剧打发时间的朋友。日剧的老影迷应该都看过T_T,因为最爱日剧也是热门日剧。非排名向

胜利即是正义(Legal High)

0823dd54564e9258781f49d69d82d158ccbf4edb锵锵锵,胜利即是正义由 堺雅人、 新恒结衣主演。 每一集都不断的刷新我的三观 雅人叔和美美的gakki 演绎了一个 毒蛇律师带着助手不断的胜诉,看似回回都是无理辩护,但换回的都是幸福的结局。大道理从剧头讲到剧尾,让我记忆深刻的是影片第二集一位知名画家:“才能这种东西,本来就是该靠自己挖掘创造的。我也不是什么天才,我只是比任何人都拼命工作一步一个脚印走过来了,等我回头一看 背后没有一个身影,那帮懒惰的人在山脚念叨着谁叫那家伙是天才,开什么玩笑!我最讨厌悠哉游哉地长大的慢性子,比我有时间 有精力 感情丰富的人,为什么比我懒惰。那就给我啊,要把这些东西都浪费掉的话 就通通给我。我还有很多很多想创造的东西,给我啊”。   整部剧感动的同时不是穿插着搞笑的剧情,时不时让我又哭又笑,赞叹编剧大人的能力。d043ad4bd11373f0fda236b1a70f4bfbfbed047a

龙樱(Dragou Sakura)

8644ebf81a4c510f092bacc96259252dd52aa572

 

龙樱一部十年前的片子了,也是最近才补完。我能说这是励志神剧吗?讲述了一个律师(阿部宽饰)带领一群平均分只有36分雄孩子考上东大的故事。完美的诠释了一个人是有无限的可能性的,这也是我在知乎上获得的宝贵知识,成绩差又怎么样?家里穷又怎么样?辍学又怎么样?这些永远都阻止不了一颗追求卓越的心,重要的是相信自己的可能性。大师再厉害再天才也是菜鸟而起,年龄太大了?就晚几年成为大师好了,有什么大不了。(跑题了)强力推荐追求梦想途中迷茫和感觉梦想太遥远犹豫是否要追逐的孩子观看。

ubuntu如何在图形界面和命令行访问root

ubuntu图形界面和命令行切换:

Ctrl + alt +F2 :进入命令行

Ctrl + alt + F7:进入图形界面

图形界面进入root文件夹方法:

先Ctrl + alt +F2进入命令行,输入 sudo apt-get install nautilus-gksu 指令安装插件装好后 Ctrl + alt + F7回到图形界面 alt + F2 输入gksu 打开搜索到的插件 在插件Run: 输入nautilus 在输入密码。就可进入任何文件夹

命令行进入root的方法:

Ctrl + alt +F2进入命令行 执行sudo passwd root 输入系统密码 su root 再输入 cd root

即可进入root文件夹