如何像Python高手一样编程

如题所述

一、Python之禅(The Zen of Python)
  The Zen of Python是Python语言的指导原则,遵循这些基本原则,你就可以像个Pythonista一样编程。具体内容你可以在Python命令行输入import this看到:
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
# 优美胜于丑陋(Python以编写优美的代码为目标)

Explicit is better than implicit.
# 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)

Simple is better than complex.
# 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)

Complex is better than complicated.
# 复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)

Flat is better than nested.
# 扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)

Sparse is better than dense.
# 间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)

Readability counts.
# 可读性很重要(优美的代码是可读的)

Special cases aren't special enough to break the rules.
Although practicality beats purity.
# 即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)

Errors should never pass silently.
Unless explicitly silenced.
# 不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写except:pass风格的代码)

In the face of ambiguity, refuse the temptation to guess.
# 当存在多种可能,不要尝试去猜测

There should be one-- and preferably only one --obvious way to do it.
# 而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)

Although that way may not be obvious at first unless you're Dutch.
# 虽然这并不容易,因为你不是 Python 之父(这里的Dutch是指Guido)
Now is better than never.
Although never is often better than *right* now.
# 做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
# 如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
Namespaces are one honking great idea -- let's do more of those!
# 命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)

  这首特别的“诗”开始作为一个笑话,但它确实包含了很多关于Python背后的哲学真理。Python之禅已经正式成文PEP 20,具体内容见:PEP 20
  二、PEP8: Python编码规范(PEP8: Style Guide for Python Code)
  Abelson & Sussman在《计算机程序的构造和解释》一书中说道:程序是写来给人读的,只是顺带让机器执行。所以,我们在编码时应该尽量让它更易读懂。PEP8是Python的编码规范,官方文档见:PEP 8,PEP是Python Enhancement Proposal的缩写。PEP8包括很多编码的规范,下面主要介绍一下缩进和命名等内容。
  空格和缩进(WhiteSpace and Indentation)
  空格和缩进在Python语言中非常重要,它替代了其他语言中{}的作用,用来区分代码块和作用域。在这方面PEP8有以下的建议:
1、每次缩进使用4个空格
2、不要使用Tab,更不要Tab和空格混用
3、两个方法之间使用一个空行,两个Class之间使用两个空行
4、添加一个空格在字典、列表、序列、参数列表中的“,“后,以及在字典中的”:“之后,而不是之前
5、在赋值和比较两边放置一个空格(参数列表中除外)
6、紧随括号后面或者参数列表前一个字符不要存在空格

  Python命名
  命名规范是编程语言的基础,而且大部分的规范对于高级语言来说都是一样的,Python的基本规范如下:
1、方法 & 属性:joined_lower
2、常量:joined_lower or ALL_CAPS
3、类:StudlyCaps
4、类属性:interface, _internal, __private
5、camelCase only to conform to pre-existing conventions

  以上内容只是对PEP8做了非常简单的介绍,由于今天的主题不在于此,所以就不在这里多讲。想要更加深入的了解Python编码规范,可以阅读PEP8官方文档和Google Python编码规范等内容。
  三、交换变量值(Swap Values)
  在其他语言中,交换两个变量值的时候,可以这样写:
temp = a
a = b
b = temp

  在Python中,我们可以简单的这样写:
b, a = a, b

  可能你已经在其他地方见过这种写法,但是你知道Python是如何实现这种语法的吗?首先,逗号(,)是Python中tuple数据结构的语法;上面的语法会执行一下的操作:
  1、Python会先将右边的a, b生成一个tuple(元组),存放在内存中;
  2、之后会执行赋值操作,这时候会将tuple拆开;
  3、然后将tuple的第一个元素赋值给左边的第一个变量,第二个元素赋值给左边第二个变量。
  再举个tuple拆分的例子:
In [1]: people = ['David', 'Pythonista', '15145551234']

In [2]: name, title, phone = people

In [3]: name
Out[3]: 'David'

In [4]: title
Out[4]: 'Pythonista'

In [5]: phone
Out[5]: '15145551234'

  这种语法在For循环中非常实用:
In [6]: people = [['David', 'Pythonista', '15145551234'], ['Wu', 'Student', '15101365547']]

In [7]: for name, title, phone in people:
...: print name, phone
...:
David 15145551234
Wu 15101365547

  PS:在使用这种语法时,需要确保左边的变量个数和右边tuple的个数一致,否则,Python会抛出ValueError异常。
  更多tuple的例子:
>>> 1,
(1,)
>>> (1,)
(1,)
>>> (1)
1
>>> value = 1,
>>> value
(1,)

  我们知道:逗号(,)在Python中是创建tuple的构造器,所以我们可以按照上面的方式很方便的创建一个tuple;需要注意的是:如果声明只有一个元素的tuple,末尾必须要带上逗号,两个以上的元素则不需要。声明tuple的语法很简单,但同时它也比较坑:如果你发现Python中的变量不可思议的变成了tuple,那很可能是因为你多写了一个逗号。。
  四、Python控制台的"_"(Interactive "_")
  这是Python中比较有用的一个功能,不过有很多人不知道(我也是接触Python很久之后才知道的)。。在Python的交互式控制台中,当你计算一个表达式或者调用一个方法的时候,运算的结果都会放在一个临时的变量 _ 里面。_(下划线)用来存储上一次的打印结果,比如:
>>> import math
>>> math.pi / 3
1.0471975511965976
>>> angle = _
>>> math.cos(angle)
0.50000000000000011
>>> _
0.50000000000000011

  PS:当返回结果为None的时候,控制台不会打印,_ 里面存储的值也就不会改变。
  五、合并字符串(Building Strings from Sub strings)
  假如现在有一个list,里面是一些字符串,你现在需要将它们合并成一个字符串,最简单的方法,你可以按照下面的方式去处理:
colors = ['red', 'blue', 'green', 'yellow']

result = ''
for s in colors:
result += s

  但是,很快你会发现:这种方法非常低效,尤其当list非常大的时候。Python中的字符串对象是不可改变的,因此对任何字符串的操作如拼接,修改等都将产生一个新的字符串对象,而不是基于原字符串。所以,上面的方法会消耗很大的内存:它需要计算,存储,同时扔掉中间的计算结果。正确的方法是使用Python中的join方法:
result = ','.join(colors)

  当合并元素比较少的时候,使用join方法看不出太大的效果;但是当元素多的时候,你会发现join的效率还是非常明显的。不过,在使用的时候请注意:join只能用于元素是字符串的list,它不会进行任何的强制类型转换。连接一个存在一个或多个非字符串元素的list时将抛出异常。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-07-20
当你成为高手了,你就像高手一样编程了

假期让你秒变Ph高手
您告诉分隔符字符串去迭代一个字符串序列 并在相邻元素之间插入自身 此方法的参数可以是任何遵循序列规则的对象 包括您自己定义的任何新的类 对于字节和字节数组对象也有类似的方法 搞懂这些问题 让你秒变Pytho高手9.为什么lambda表达式不包含语句 Python的lambda表达式不能包含语句 因为Python的语法框架不能处理嵌套在表达...

怎么从python小白到大神
1、零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有比较多的学校使用python作为入门编程语言。python2x、python3x直接可以去python官网下载 pycharm:python世界最好的一款IDE(建议装上)ipython:一款python解释器,比原装的好用 2、找到合适的入门...

成为python高手需要多久(学会Python需要多久)
初级Python掌握阶段学习时间:如果是零基础选择自学,这个期间主要学习的内容是常量、变量的应用,运算符的了解和使用、流程控制的使用等,掌握【Python编程语言】基础内容、OOP基础知识,学习后应该能自己处理OOP问题。根据个人的理解能力和时间安排,所需要的时间也不同,一般都是5个月左右或者是更多。如果是...

零基础学Java如何成为代码高手
1.最重要的是学会写程序 C语言也好,python也好,你得学会把自己的思考用程序实现。举个例子,你想制定计划表,安排自己的时间,那这个问题就可以写个程序来实现;你想做笔记、管理自己的文件,这也是一个程序。从简单的、直接的几行十几行程序开始,比如计算器;到复杂的小工具,比如大数计算器。这个过...

如何靠自学提升自己的编程能力?
多使用非百度的搜索引擎,可以获取很多英文的参考资料,百度会减弱自己的英文能力。想要快速解决这些问题可以学会使用搜索引擎。编程界有个说法:超级程序员=普通程序员+Google。用好搜索引擎,Google+GitHub也许可以解决你大部分的问题。Newest ‘python’ Questions—一个与程序相关的IT技术问答网站 3.10.4 ...

新手怎么学代码编程?
要选择一门编程语言开始学习。编程语言有很多,比如python,c,c++,Java等等。但是我建议新手朋友们还是学习python比较好,因为python的兼容性比较好,然后代码简单,很适合成为一种入门语言。而且python现在还很流行,就业前景也很好。但如果要想成为一个编程高手,那只掌握一门语言肯定是不行的,一名优秀的...

对比几段代码,看看你是 Python 菜鸟还是老鸟
在Python编程中,一个检验初学者与资深开发者差异的小窍门是观察代码风格是否“pythonic”。"Python之禅",当你在Python Shell输入"import this",它揭示了Python编程的一些核心理念,比如追求简洁、可读性和优雅。当你开始编写代码,如果你的实现显得生硬,可能就暴露了你是初学者,因为不够pythonic。pythoni...

python学到什么程度算是合格的程序员?
第一级别:入门 Python是一种高级编程语言,由于它的语法简单易懂,因此很多人选择Python作为自己的第一门编程语言。如果您想要学习Python,那么第一件事就是从入门开始。入门级别的Python学习,通常会涉及到Python的语法基础、变量、数据类型、循环、条件语句等基本概念。对于刚刚入门的学生来说,建议从...

为什么我编程的时候感受不到那种乐趣,也不是程序难?要怎么培养啊_百度...
最后,在代码中有一种看不见的美,就像诗一样,美景全是你的,你可以随心所欲编程真的非常有趣,它不仅满足了我们内心深处进行创造的渴望,让人头脑变得灵活,而且还愉悦了每个人内在的情感。6.3学好编程的建议6.3.1请热爱编程如果想成为编程牛人的话,请热爱编程。有兴趣是最好了,没兴趣也没关系,可以慢慢培养,当你...

什么是程序高手
程序高手具备扎实的编程基础。他们熟练掌握各种编程语言,如Python、Java、C++等,并深入理解这些语言的语法、语义和特性。同时,他们还熟悉各种算法和数据结构,能够根据实际情况选择合适的算法,优化程序性能。在实际工作中,程序高手能够迅速定位和解决程序中的错误,确保程序的稳定性和可靠性。程序高手具备...

相似回答