python良好编程习惯

python良好编程习惯

ID:9800824

大小:45.50 KB

页数:9页

时间:2018-05-10

python良好编程习惯_第1页
python良好编程习惯_第2页
python良好编程习惯_第3页
python良好编程习惯_第4页
python良好编程习惯_第5页
资源描述:

《python良好编程习惯》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Python良好编程习惯如果进行的是简单的处理,请使用字符串方法,这样可避免复杂的正则表达式所带来的错误,并保证程序的可读性。在原始字符串末尾使用反斜杠是语法错误。正则表达式的模式字符串中常常包含反斜杠字符。使用原始字符串来创建模式,可以避免对其中每个反斜杠进行转义的必要,使模式字符串更容易理解。[说明:原始字符串(Raw String),也就是在字符串之前加上字符前缀r后创建的一个字符串。通常,如果在字符串中出现,Python会把它视为转义字符,并试图用正确的转义序列替换元字符及其后续字符。但是,如果元字符出现在一个原始字符串中,Python不会把它

2、解释成转义字符,而是将其视为字面意义的反斜杠字符。例如,Python会将""解释成换行符,但将r""解释成两个字符---一个反斜杠和一个n。]用函数式编程语言(比如说Scheme)写的程序可以反映出数学表达式的结构;数学表达式是由若干函数字符串组成的,其中的每一个都能计算出一个结果并且不产生任何副作用。同样的函数用同样的参数去调用就会产生同样的结果,这和调用时的上下文是无关的。用这样的方法可以将我们的代码优雅地结构化(并且一定程度上也起到了简化的效果)。Python编程语言拥有所有让它在函数式编程(FP)上有优势的特性。在这篇文章中,我们将从“Pyt

3、honic”的角度来看一下FP中的一些有趣的思想如高阶函数、闭包、lambda以及柯里化等等。什么是函数式编程?作为程序的一部分,我们所写的函数只是在表面上和数学函数类似。比方说我们写这么一个函数:intcurrent_balance=100;intwithdraw(intw){  current_balance=current_balance-w;  returncurrent_balance;}我们调用一次“withdraw(10)”之后90这个值将会被返回。再调用一次“withdraw(10)”则返回80。如果“withdraw”是一个“纯”数学函数的

4、话,那么两次调用应该返回同样的值,因为我们传给它的参数值是一样的。而我们的程序则“记住”了前次的调用(它有“状态”)然后每次都返回一个新的值。一个如下的数学方程:y=f(a)+g(b)+f(a)有一个很好的属性就是它可以被化简为:y=2*f(a)+g(b)事实上如果有一个计算机程序是由一组会修改全面变量的函数构成的话,我们是无法对它进行这样化简的。相比于生成一个数学证明,验证一个计算机程序的正确性更像是一个探索各种假设分析的情境的过程。“赋值”操作符也带来了些问题。让我们简单地看一个计算阶乘的循环:#Computefactorialof'n'intf=1,n

5、=5;while(n>0){  f=f*n;  n=n-1;}returnf;我们会犯的一个常见的错误就是在循环体内交换两个语句的顺序。因为赋值操作符改变了它左边的符号的值,所以这让我们在考虑在我们的程序中每一个动作的顺序时需要格外的小心。函数式编程的范式鼓励我们把程序结构化成一系列“纯”的函数,这些函数没有全局的状态也不使用赋值操作符(注意这并不是所有情况下都可行的,很显然一个银行的系统就需要“记住”很多东西)。函数式编程人员使用递归的函数调用(循环可以当成一种特殊的递归,于是特定的循环结构“while”和“for”也就不需要了)来产生重复性的行为。函数则

6、成为了我们的“一等公民”,比方说,它们可以被当成参数传给另一个函数,也可以被别的函数返回,这就促成了我们称之为“高阶函数”的产生。当和“闭包”这个思想结合在一起的时候,这就成为了一个很强大的思想,它可以很简单地捕获很多复杂的可计算模式。递归表示Python中定义一个递归函数没什么了不起的。这里是一个用Python写的经典阶乘函数:deffact(n):  if(n==0):return1  returnn*fact(n-1)作为一等公民对象的函数让我们在Python的命令行中定义两个函数,然后来做些实验:>>>>>>defsqr(x):returnx*x..

7、.>>>defcube(x):returnx*x*x...>>>sqr>>>a=[sqr,cube]>>>a[0](2)>>>defcompose(f,g):returnf(g(x))...>>>compose(sqr,cube,2)64>>>我们先将两个函数存到数组中,然后用“a[0][2]”的方式来调用“sqr”。接着我们又定义一个叫“compose”的函数,然后将“sqr”和“cube”这两个函数作为参数传给它们并进行调用。注意这边并没有任何特殊的记号,我们操作函数时就好像它们是像数组和数字之类的对象一

8、样。高阶函数的威力StructureandInter

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。