解析函数

深度解析并实现python中的super(转载,好文)

本秂侑毒 提交于 2019-12-24 19:10:43
大神半个月的成绩,让我看的叹为观止,建议看原帖地址,会让你对Python的描述符有更强的认识。 原文链接:https://blog.csdn.net/zhangjg_blog/article/details/83033210 深度解析并实现python中的super 概述 super的定义 函数bound和描述器 super的典型用法 super的本质 自定义super python中对super的实现 写在最后 概述 python中的super是一个神奇的存在。本文对python中的super进行深入的讲解,首先说明super的定义,并列举一下super的典型用法,然后会对和super相关的语言特性进行讲解,比如mro(方法解析顺序),descriptor描述器,函数绑定,最后尝试自己动手实现一个super,并简单探索一下python中对super的实现。 super的定义 首先看一下super的定义,当然是help(super)看一下文档介绍: Help on class super in module builtins: class super(object) | super() -> same as super(__class__, <first argument>) | super(type) -> unbound super object | super(type,

02-01 Django之路由层

跟風遠走 提交于 2019-12-24 14:43:14
Django之路由层 一 路由的作用 路由即请求地址与视图函数的映射关系,如果把网站比喻为一本书,那路由就好比是这本书的目录,在Django中路由默认配置在urls.py中,如下图: 二 简单的路由配置 # urls.py from django.conf.urls import url # 由一条条映射关系组成的urlpatterns这个列表称之为路由表 urlpatterns = [ url(regex, view, kwargs=None, name=None), # url本质就是一个函数 ] #函数url关键参数介绍 # regex:正则表达式,用来匹配url地址的路径部分, # 例如url地址为:http://127.0.0.1:8001/index/,正则表达式要匹配的部分是index/ # view:通常为一个视图函数,用来处理业务逻辑 # kwargs:略(用法详见有名分组) # name:略(用法详见反向解析) 案例: urls.py文件 from django.conf.urls import url from django.contrib import admin from app01 import views # 导入模块views.py urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'

Web前端知识体系

倖福魔咒の 提交于 2019-12-24 04:03:20
看到一篇不错的文章,拿来收藏和分享。 原文:http://mp.weixin.qq.com/s/UFTfdE7LYhHquWEzwZKLCQ Web前端技术由 html、css和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍。目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希望共勉。 一、JAVASCRIPT 篇 0、基础语法 Javascript 基础语法包括:变量声明、数据类型、函数、控制语句、内置对象等。 在ES5 中,变量声明有两种方式,分别是 var 和 function ,var 用于声明普通的变量,接收任意类型,function用于声明函数。另外,ES6 新增了 let、const、import 和 class 等四个命令,分别用以声明 普通变量、静态变量、模块 和 类 。 JS数据类型共有六种,分别是 String、Number、Boolean、Null、Undefined 和 Object 等, 另外,ES6新增了 Symbol 类型。其中,Object 是引用类型,其他的都是原始类型

函数的作用域

你。 提交于 2019-12-23 21:42:21
什么是作用域 JS的函数作用域,将作用域拆开来看,“作用”表示读写操作,函数可以读取代码,改写代码;“域”表示空间,范围,区域。 步骤 1、逐行解读过程中,当碰到表达式的时候,就会用表达式修改预解析的值;表达式是=、+、-、*、/、参数(注意,参数也是表达式,参数可以被修改) 2、预解析的时候,遇到重名的变量名称,字母,值留下一个; 3、预解析时,当变量碰到函数的名称一致的时候,值留下函数块。因为预解析的时候,变量其实是未定义的状态 4、逐行解读代码时,碰到函数,如果没有调用,表示函数没有执行。此时直接略过,直到有表达式才能改变变量的值。 5、所有变量,在正式运行代码之前,都会提前赋一个值;未定义。所有函数,在预解析的时候,都是函数块; 6、逐行解读代码时,是从上到下,从函数内部到函数外部的执行过程 解析 <script> var a = 20; var fun = function fun(){}; function fun1(){ console.log(b);//undefined var b = 30; console.log(a);//20 var d = 20; function fun2(){ console.log(d);//20 d = 30; console.log(d);//30 } fun2(); } fun1(); console.log(fun); <

利用Python抓取和解析网页

ぃ、小莉子 提交于 2019-12-23 21:29:56
  【 IT168 技术专稿 】对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事实上,通过Python语言提供的各种模块,我们无需借助Web 服务器 或者Web浏览器就能够解析和处理HTML文档。本文将详细介绍如何利用Python抓取和解析网页。首先,我们介绍一个可以帮助简化打开位于本地和Web上的HTML文档的Python模块,然后,我们论述如何使用Python模块来迅速解析在HTML文件中的数据,从而处理特定的内容,如链接、图像和Cookie等。最后,我们会给出一个规整HTML文件的格式标签的例子,通过这个例子您会发现使用python处理HTML文件的内容是非常简单的一件事情。    一、解析URL   通过Python所带的urlparse模块,我们能够轻松地把URL分解成元件,之后,还能将这些元件重新组装成一个URL。当我们处理HTML 文档的时候,这项功能是非常方便的。    import urlparse   parsedTuple = urlparse.urlparse(    " http://www.google.com/search?   hl = en & q = urlparse & btnG = Google + Search " )   unparsedURL = urlparse

Yacc 与 Lex 快速入门

情到浓时终转凉″ 提交于 2019-12-23 21:21:45
developerWorks 中国 > Linux > Yacc 与 Lex 快速入门 Lex 与 Yacc 介绍 文档选项 打印本页 将此页作为电子邮件发送 级别: 初级 Ashish Bansal ( mailto:abansal@ieee.org?subject=Yacc 与 Lex 快速入门&cc=abansal@ieee.org ), 软件工程师, Sapient 公司 2000 年 11 月 01 日 Lex 和 Yacc 是 UNIX 两个非常重要的、功能强大的工具。事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 FORTRAN 和 C 的编译器如同儿戏。Ashish Bansal 为您详细的讨论了编写自己的语言和编译器所用到的这两种工具,包括常规表达式、声明、匹配模式、变量、Yacc 语法和解析器代码。最后,他解释了怎样把 Lex 和 Yacc 结合起来。 Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 让我们从 Lex 开始吧。 Lex Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,这个我们一会儿就要讨论。 一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记

js常见面试题

和自甴很熟 提交于 2019-12-23 00:05:14
1. javascript的typeof返回哪些数据类型. 答案:string,boolean,number,undefined,function,object 2. 例举3种强制类型转换和2种隐式类型转换? 答案:强制(parseInt,parseFloat,number) 隐式(== ===) 3. split() join() 的区别 答案:前者是将字符串切割成数组的形式,后者是将数组转换成字符串 4. 数组方法pop() push() unshift() shift() 答案:push()尾部添加 pop()尾部删除 unshift()头部添加 shift()头部删除 5. IE和标准下有哪些兼容性的写法 答案: var ev = ev || window.event document.documentElement.clientWidth || document.body.clientWidth Var target = ev.srcElement||ev.target 6. ajax请求的时候get 和post方式的区别 答案: 一个在url后面 ,一个放在虚拟载体里面 get有大小限制(只能提交少量参数) 安全问题 应用不同 ,请求数据和提交数据 7. call和apply的区别 答案: Object.call(this,obj1,obj2,obj3) Object

Express 4.x Node.js的Web框架

左心房为你撑大大i 提交于 2019-12-21 14:22:27
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。 http://www.cnblogs.com/shijiaqi1066/p/3821150.html 本文使用node.js v0.10.28 + express 4.2.0 1 Express概述 Express 是一个简洁而灵活的node.js的MVC Web应用框架,提供一系列强大特性创建各种Web应用。 Express 不对 node.js 已有的特性进行二次抽象,我们只是在它之上扩展了Web应用所需的功能。 Expressd底层由Node.js的HTTP模块实现。 1.1 express 4.x 安装 express 4.x与之前的版本有了许多的变化,书里和网上的很多方法都不再适用。学习需要更多的参考官方文档。 若需要用express 3.x版本,直接使用nmp 中的@字符确定版本,指令如下: npm install -g express-generator@3 若需要使用4.x,注意的问题在4.x版本express 已经把命令行工具分离出来。 现在全局安装只需要安装这个命令行工具就可以,指令如下: npm install -g express-generator 1.2 创建express工程 使用express命令 express [options] 选项: -h, -

浏览器解析JavaScript原理

南楼画角 提交于 2019-12-19 20:26:42
1.浏览器解析JavaScript原理 特点: 1.跨平台 2.弱类型 javascript 定义的时候不需要定义数据类型,数据类型是根据变量值来确定的.    var a = 10; 数字类型 var a = true boolean类型 ( 强类型: 定义变量的时候需要定义变量的类型:例如java,C#中的int a = 10 boolean a = true,直接确定了数据类型) 3.解释执行,逐行执行 2.javascript 执行过程 1.语法检测 看你有没有基本的语法错误,例如中文,关键字错误... 2.词法分析(预编译) 3.逐行执行 3.词法分析 预编译的过程(两种情况) 1.全局 (直接是script标签中的代码,不包括函数执行) 以下面demo为例: console.log(a); console.log(b) var a = 100; console.log(a) var b = 200 var c = 300 function a(){ } function fun(){ } 执行前:  1) 首先生成一个GO(global object)对象,看不到,但是可以模拟出来用来分析 GO = { //自带的属性都不写 }    2) 分析 变量声明 ,变量名为属性名,值为undefined  GO = { a : undefined, b : undefined

021 UNIX再学习 -- 发送信号

无人久伴 提交于 2019-12-19 06:05:17
一、发送信号的方式 发送信号的方式有几种: 1、由键盘触发的信号(只能发送一些比较特殊的信号) SIGINT (2):ctrl+c 中断符 SIGQUIT (3):ctrl+\ 退出符 SIGTSTP (20):ctrl+z 停止符 2、由错误和异常引发的信号 SIGILL (4) 进程试图执行非法指令 SIGBUS (7) 硬件或对齐错误 SIGFPE (8) 算术异常 SIGSEGV (11) 无法内存访问 SIGPIPE (13) 向无读取进程的管道写入 SIGSTKFLT (16) 协处理器栈错误 SIGXFSZ (25) 文件资源超限 SIGPWR (30) 断电 SIGSYS (31) 进程试图执行无效系统调用 3、用专门的系统命令发送信号 kill [-信号] PIDs 若不指明具体的信号,缺省发送 SIGTERM (15) 信号。 该信号允许用户优雅地终止进程。进程可以选择捕获该信号,并在临终之前完成必要的清理和善后工作。但如果捕获了该信号,却死赖着不走,则有流氓进程之嫌。 若要指明具体信号,可以使用信号编号,也可以使用信号名称,而且信号名称中的“SIG”前缀可以省略不写。例如: kill -9 1234 kill -SIGKILL 1234 kill -KILL 1234 kill -9 -1 (终止所有进程) 接收信号的进程可以是一个、多个或 所有的(PIDs