Python教程python语言风格
Posted 程序员二黑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python教程python语言风格相关的知识,希望对你有一定的参考价值。
对于风格,光说是没有用的,最好是通过例子来看看,因为例子看得见,会显得更真实。
下面从三个方面给大家介绍,并附上实例
- 语法
- 标准库
- 第三方库或框架
语法
在语法上,代码风格要充分表现Python自身特色。举个最常见的例子,在其他的语言(如C语言)中,两个变量交换需要如下的代码:
这里需要一个中间变量来存储变化赋值前的值。
利用Python的packaging/unpackaging机制,Pythonic的代码只需要以下一行:
还有,在遍历一个容器的时候,类似其他编程语言的代码如下:
而 Pythonic的代码如下:
灵活地使用迭代器是一种Python风格。又比如,需要安全地关闭文件描述符,可以使用以下with语句:(这段代码文件读写中常用到,后面的教程我们会介绍)
通过上述代码的对比,能让大家清晰地认识到Pythonic的一个要求,就是对Python语法本身的充分发挥,写出来的代码带着Python味儿,而不是看着像C语言代码,或者Java代码。
应当追求的是充分利用Python语法,但不应当过分地使用奇技淫巧,比如利用Python的Slice语法(切片),可以写出如下代码:
如果不是同样追求每一个语法细节的“老鸟”,这段代码的作用恐怕不能一眼就看出来。实际上,这个时候更好地体现Pythonic的代码是充分利用Python库里reversed()函数的代码。
鲸鱼这里补充下: 好的代码应该是语义化的可读的,所以过分的奇淫巧计反而会降低代码质量
标准库
写Pythonic程序需要对标准库有充分的理解,特别是内置函数和内置数据类型。比如,对于字符串格式化,一般这样写:
其实%s是非常影响可读性的,因为数量多了以后,很难清楚哪一个占位符对应哪一个实参。所以相对应的Pythonic代码是这样的:
这样在参数比较多的情况下尤其有用。
%占位符来自于大家的先验知识,其实对于新手而言,有点“莫名其妙”,所以更具有Pythonic风格的代码如下:
print ‘{greet} from {language}’.format(greet=‘hello world’,
language=‘Python’)
str.format()方法非常清晰地表明了这条语句的意图,而且模板的使用也减少了许多不必要的字符,使可读性得到了很大的提升。事实上,str.format()也成了Python最为推荐的字符串格式化方法,当然也是最Pythonic的。
Pythonic的库或框架
编写应用程序的时候的要求会更高一些。因为编写应用程序一般需要团队合作,那么可能你编写的那一部分正好是团队的另一成员需要调用的接口,换言之,你可能正在编写库或框架。程序员利用Pythonic的库或框架能更加容易、更加自然地完成任务。如果用Python编写的库或框架迫使程序员编写累赘的或不推荐的代码,那么可以说它并不Pythonic。现在业内通常认为Flask这个框架是比较Pythonic的,它的一个Helloworld级别的用例如下:
稍有编程经验的人都可以通过上例认识到利用Python编程极为容易这一事实。一个Pythonic的框架不会对已经通过惯用法完成的东西重复发明“”轮子“,而且它页遵循常用的Python惯例。创建Pythonic的框架及其困难,什么理念更酷,更符合语言习惯对此毫无帮助,事实上这些年来优秀的Python代码的特性也在不断演化。比如现在认为像generators之类的特性尤为Pythonic
另一个有关新趋势的例子是:Python的包和模块结构日益规范化。现在的库或框架跟随了以下潮流:
- 包和模块的命名才用小写,单数形式,而且短小
- 包通常仅作为命名空间,如只包含空的init.py文件
我是个自动化测试人员上面是我收集的一些视频资源,如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们扣扣群(785128166)里面有各种软件测试资源和技术讨论。
以上是关于Python教程python语言风格的主要内容,如果未能解决你的问题,请参考以下文章