- 军军小站|张军博客
搜索到与相关的文章
Python

Python 之父的解析器系列之五:左递归 PEG 语法

原题|Left-recursivePEGgrammars作者|GuidovanRossum(Python之父)译者|豌豆花下猫(“Python猫”公众号作者)声明|本翻译是出于交流学习的目的,基于CCBY-NC-SA4.0授权协议。为便于阅读,内容略有改动。我曾几次提及左递归是一块绊脚石,是时候去解决它了。基本的问题在于:使用递归下降解析器时,左递归会因堆栈溢出而导致程序终止。【这是我的PEG系列的第5部分。其它文章参见这个目录】假设有如下的语法规则:ex

系统 2019-09-27 17:49:40 1843

Python

Python3.x中自定义比较函数

在Python3.x的世界里,cmp函数没有了。那么sorted,min,max等需要比较函数作为参数的函数该如何用呢?以min函数的定义为例,有两种重载形式:单参数(一个迭代器):复制代码代码如下:min(iterable[,key=func])->value多参数(多个待比较内容):复制代码代码如下:min(a,b,c,...[,key=func])->value本文主要讨论key=func参数的使用。举例说明吧:1.自定义对象的比较我定义了一个类te

系统 2019-09-27 17:48:44 1843

Python

人生苦短我用python python如何快速入门?

假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程。那么本教程将花费十分钟的时间带你走入Python的大门。本文的内容介于教程(Toturial)和速查手册(CheatSheet)之间,因此只会包含一些基本概念。很显然,如果你希望真正学好一门语言,你还是需要亲自动手实践的。在此,我会假定你已经有了一定的编程基础,因此我会跳过大部分非Python语言的相关内容。本文将高亮显示重要的关键字,以便你可以很容易看到它们。另外需要注意的是,由于

系统 2019-09-27 17:48:10 1843

Python

Python:logging 的巧妙设计

引言logging的基本用法网上很多,这里就不介绍了。在引入正文之前,先来看一个需求:假设需要将某功能封装成类库供他人使用,如何处理类库中的日志?数年前在一个C#开发的项目中,我用了这样的方法:定义一个logging基类,所有需要用到日志的类都继承这个基类,这个基类中定义一个LogHandler事件,该事件用于实现具体的记录日志动作,同时可以通过将类A的LogHandler委托挂到类B的LogHandler上,实现将两个类的日志信息添加到一起。自从看了py

系统 2019-09-27 17:47:37 1843

Python

Python中正则表达式的用法实例汇总

正则表达式是Python程序设计中非常实用的功能,本文就常用的正则表达式做一汇总,供大家参考之用。具体如下:一、字符串替换1.替换所有匹配的子串用newstring替换subject中所有与正则表达式regex匹配的子串result,number=re.subn(regex,newstring,subject)2.替换所有匹配的子串(使用正则表达式对象)reobj=re.compile(regex)result,number=reobj.subn(news

系统 2019-09-27 17:46:38 1843

Python

总结的几个Python函数方法设计原则

在任何编程语言中,函数的应用主要出于以下两种情况:1.代码块重复,这时候必须考虑用到函数,降低程序的冗余度2.代码块复杂,这时候可以考虑用到函数,增强程序的可读性当流程足够繁杂时,就要考虑函数,及如何将函数组合在一起。在Python中做函数设计,主要考虑到函数大小、聚合性、耦合性三个方面,这三者应该归结于规划与设计的范畴。高内聚、低耦合则是任何语言函数设计的总体原则。1.如何将任务分解成更有针对性的函数从而导致了聚合性2.如何设计函数间的通信则又涉及到耦合

系统 2019-09-27 17:45:56 1843

Python

Python深入学习之闭包

闭包(closure)是函数式编程的重要的语法结构。函数式编程是一种编程范式(而面向过程编程和面向对象编程也都是编程范式)。在面向过程编程中,我们见到过函数(function);在面向对象编程中,我们见过对象(object)。函数和对象的根本目的是以某种逻辑方式组织代码,并提高代码的可重复使用性(reusability)。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。不同的语言实现闭包的方式不同。Python以函数对象为基础,为闭包这一语法结

系统 2019-09-27 17:45:45 1843

Python

Python包、工具安装中遇到的错误提示

pip版本问题Youareusingpipversionxx.x.x,howeverversionxx.x.xisavailable.本质是想告诉你,版本需要升级啦!下面介绍当直接upgrade解决不了问题是的“强硬”做法!准备阶段:先去【pip官网】下载最新的压缩包!并解压。sudoapt-getremovepython-pip#1.卸载旧版本sudopythonsetup.pyinstall#2.进入压缩包的解压目录执行pip-V#3.看到版本号证明成

系统 2019-09-27 17:45:40 1843

Python

python 捕获shell脚本的输出结果实例

importsubprocessoutput=Popen(["mycmd","myarg"],stdout=PIPE).communicate()[0]importsubprocessp=subprocess.Popen(['ls','-a'],stdout=subprocess.PIPE,stderr=subprocess.PIPE)out,err=p.communicate()printout#workonUnix/Linuxonlyimportcom

系统 2019-09-27 17:45:26 1843

Python

Python中用Decorator来简化元编程的教程

少劳多得Decorator与Python之前引入的元编程抽象有着某些共同之处:即使没有这些技术,您也一样可以实现它们所提供的功能。正如MicheleSimionato和我在可爱的Python专栏的早期文章中指出的那样,即使在Python1.5中,也可以实现Python类的创建,而不需要使用“元类”挂钩。Decorator根本上的平庸与之非常类似。Decorator所实现的功能就是修改紧接Decorator之后定义的函数和方法。这总是可能的,但这种功能主要是

系统 2019-09-27 17:38:33 1843