如何提升Python编程能力

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何提升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时将抛出异常。
参考技术A   Python是目前流行程度比较高的全场景编程语言,掌握Python不仅能拓展自身的科研实践边界,同时也会扩展个人的发展空间,所以目前很多同学都会重点学习Python语言。
  提升编程能力的第一步是要有一个明确的目标,能力往往都是目标来驱动的,所以目标越明确则能力提升的速度往往也会越快。
  虽然Python语言属于全场景编程语言,但是作为初学者来说,一定要选择一个具体的应用场景来制定短期、中期和长期目标,这样才能逐渐深入并形成一定的编程思想。
  比如对于想往人工智能方向发展的同学来说,应该先掌握用Python语言来完成机器学习领域的经典算法,比如Knn、决策树、朴素贝叶斯、聚类算法等。
  当然了,目标往往是由场景来驱动的,所以提升编程能力的第二步就是要给自己营造一个较好的实践场景。
  提升编程能力的第三步就是明确自己的主攻方向,结合主攻方向的创新趋势找到自己的创新点,这个过程需要完成大量的基础知识积累.
参考技术B 1、就个人而言,第一步肯定是重复所谓的代码量,代码量上去了,能提高开发效率和思路
2、接触算法,当你经过算法的洗礼,你也算能够登堂入室了
3、开始接触一些系统,网站架构等,开拓思路
4、讲的很宽泛,但是1,2,3点还是非常实际的一条路。

编程新手如何提高编程能力?

俗话说得好,不想进大厂的程序员不是一个好程序员。那么作为即将步入程序员大军的小萌新/程序员界的老司机,你们都是如何备战大厂的呢?是否面对网络上纷繁复杂的资料茫然无从下手?抑或是坐在电脑旁埋头敲着代码却找不到一丝存在感?不用怕!今天我就来带大家一起解锁一款程序员必备法宝,帮你轻松提升编程能力,离大厂更进一步。

众所周知,刷题是程序员提升编程能力的最快方法,所以拥有一款靠谱的刷题神器至关重要。
技术图片
如上图所示,我们可以看到此刷题神器将题目分为了容易、中等、困难三个等级,这样,大家就可以根据自己的当前水平选择对应难度的题目,由难到易逐个击破,极大地提升了我们的学习效率。此外,我们还可以通过标签来选择对应知识点的题目,在做题中掌握各个知识点的出题规律和类型,同时也加深了对知识点的理解,全方位地夯实自己的基础。

然而,看到这里肯定还有人疑惑:此款刷题神器虽好,但总感觉少了点什么。这样天天对着电脑一个人默默刷题也太枯燥了吧,慢慢就会丧失学习的激情。想要激情?别担心!该神器还贴心地为大家准备了专业的编程赛来激发大家的学习热情。

告别传统的封闭式刷题模式,有趣又新奇的玩法,让你彻底爱上编程!

此次在线编程大赛涉及范围广,难度不高,入门级算法赛(可参考LeetCode或九章算法),支持Java、Python、C++、JS、Go等多种语言,不管你是高校的学生还是社会人员,只要你对编程感兴趣,想提升自己的编程能力,都可以报名参加比赛。本次比赛与九章算法合作,确保了赛题的专业性。这么牛的比赛,参加完还怕找不到好工作吗?

参加比赛不仅可以激起你学习的热情,提升你的编程能力,还可以赢取高达20000的奖金,入围复赛就可以得到纪念T恤一件。现在还可报名模拟赛,额外赢取樱桃键盘、SKG颈椎按摩仪、付费课程等超值礼品。普通的刷题千篇一律,有趣的比赛奖金上万。

报名入口

活动时间:2020年7月20日-2020年9月17日
技术图片
技术图片

Get 同款刷题神器请点击 在线编程

以上是关于如何提升Python编程能力的主要内容,如果未能解决你的问题,请参考以下文章

目前大一,在学C++,编程能力如何快速提高?

豆瓣9.1分,这本书会大大提升很多开发者的Python编程能力

快速提升Golang编程能力:那就一起用Go做项目吧

可极大提升编程思想与能力的书有哪些?

少儿Python编程

学完趣味编程PythonC++,孩子的编程能力可以达到什么水平?