【新手解答】如何有效提高自己的Python编程能力?

1、首先想说的第一点:转变学生时代的学习思维!

不要把学习编程当做学生时代的应试考试来学了,编程它根本不是要死记硬背的东西啊!它是一门技能!

那些早上6点起来在那背代码的,放心,最后还是不会写代码。

没必要都去记住这些代码,理解代码比记住代码更重要,我们能理解代码是干什么用的就可以了。如果后面用的时候忘记了,反过头来知道在哪查找答案就可以了。

举个最简单的例子:游泳,这也是一门技能学习吧。

需要预习吗?需要记动作要领吗?不需要,几岁大点的小孩都会游呢!都是是通过在水里的反复练习,教练手把手地传授动作,一点一点提高熟练度学会的。

同理,学编程也是这么一回事,理论为辅练习为主。因为实际操作经验,这些细节书上基本不会有。

2、不要说我会什么

① 学编程最快的捷径就是苦敲代码,积累代码量。一门语言写几万行的代码量,就上手了。

”我会什么”这句话,其实是最没用,最虚飘飘的东西,但是你要说,XX著名项目作者,那你就牛了,我也不需要让你证明什么了。

有问题,先文档,再stackoverflow,再技术文章。

② 增加自己的项目经验,面试的时候这就是加分宝典!提到的积累代码量也好,基础也好,最终都是为“项目”、为“产品”服务的。

敲黑板!没有项目经验就造项目经验,有空多逛逛github!github上遍地的源码分享,都可以为你所用。

③ 多结交一些同行大神,多认识一些人脉,不管怎样,直接通过人往往要比那些通过流程走容易的多。

④ 编程是一个需要不断学习训练的过程,尤其是新手需要尝试多种学习方式并总结出最适合自己的方式。

零基础学Python有什么建议?674 赞同 · 7 评论回答

3、多修炼内功——底层技术

两点原因:

  • 技术更新换代快;

换代这么快的今天,是无法把每一个框架/工具都学习一遍的,底层技术就是你快速上手的瑞士军刀。

  • 懂得底层技术的人更有竞争力;

你怎么和别人拉开差距?单纯就靠使用框架的能力么?这些随便从培训班抽一个人可能都会做的工作无法成为你的核心竞争力。

为什么有的人学知识特别快?可能不是因为他有多聪明,而是他内功扎实,也就是对计算机的知识体系有一定程度上的理解。

比如在你懂了计算机网络之后,就可以很快理解 RESTAPI,GraphQL,RPC 之间的异同,也可以明白即时通讯协议 XMPP,MQTT 的优劣。

比如你了解 Lambda 演算,编译原理,形式语言,也就能理解一个语言为什么要这么设计语法,为什么不能这么写。

比如你懂了数据结构,你就能理解数据库,搜索引擎中的细节原理。

所以你眼中的聪明人真的是天才么?不排除真的有天才,但我想更多的是普通人,只不过他学的稍微比你多一点,知识体系比你更系统一点罢了。

4、不要小瞧基础知识

没有这些基本知识的积累,很快就会在某个阶段由于功底不够而无法再继续后面的学习。

Python必备基础:

①Python程序:Python的基本介绍、sublime、vi编辑代码、helloworld程序、Python运行代码、Python的交互模式

②变量、输入和输出、运算符:定义变量、使用变量、变量的类型,以及类型的转换、if、else、if满足时执行做条语句、关键字、运算符、标识符、驼峰法命名、print一次性输出多个变量的值

③if、while、for:if比较运算符、and,or,if语句的注意点、not,if,elif的使用、if逻辑运算符、while循环、if嵌套、复合赋值运算符,for循环,break和continue、while嵌套中的break作用范围

④字符串:在内存中的存储方式、类型的转换和输入、组成字符串的2种方式、字符串中的下标及切片、字符串逆序。

⑤列表和字典:列表的引入、定义、C语言中的数组不同的点、列表的增删改查、for、else、列表的append、extend、while、for循环遍历列表

专业深入方向的比如:

① Web开发:

熟悉MVC架构,掌握一些框架,比如Django、Flask、Tornado。除此之外还需知道一些SQL与NoSQL数据库。

② 爬虫开发:

熟练掌握HTTP、TCP/IP协议,熟悉常用的Http请求处理库与解析库。另外爬虫框架Scrapys在爬虫的应用方面非常广泛。还有Selenium,会用抓包工具,数据库也需要掌握。

③ 数据分析:需要学习NumPy、Pandas、Matplotlib等库。

网上有好多教程可以配合练习,资源特别多,从入门开始看起,当然,也要配合自己的实践,不然任何人说了或者带你学习都没有多大用的。

5、良好的编码习惯

很多人会忽略的一点,对于新手来说,中英符号错误、空格错误、拼写错误、标点符号打错等都有可能导致Error消息或程序Bug。

Python好上手,但在Python中编写错误的代码也很容易。

比如下面的这些“糟糕的做法”最好远离:

1)在任何地方使用import *

Import* 是一种惰性行为,不仅会污染当前的命名空间,还会使代码检查工具(如 pyflakes)无效。在随后查看代码或调试的过程中,通常很难从一堆 import* 中找出第三方函数的来源。

2)使用可变对象作为默认参数

错误演示

def use_mutable_default_param(idx=0, ids=[]):
    ids.append(idx)
    print(idx)
    print(ids)
 
use_mutable_default_param(idx=1)
use_mutable_default_param(idx=2)

输出结果

1
[1]
2
[1, 2]

最关键的原因是:

① 函数本身也是一个对象,默认参数被绑定到函数对象。

② append 方法将会直接修改对象,因此下次调用该函数时,绑定的默认参数不再为空列表。

正确操作

def donot_use_mutable_default_param(idx=0, ids=None):
    if ids is None:
        ids = []
    ids.append(idx)
    print(idx)
    print(ids)

3)过度使用元组解包

在 Python 中,允许对元组类型执行解包操作:

# human = ('James', 180, 32)
name, height, age = human

这种做法比编写 name=human[0] 要聪明得多,但是,它经常被滥用!

如果你之后需要在 human 中插入性别数据 sex,那么所有的解包操作都需要修改,即使 sex 不会在某些逻辑中使用。

# human = ('James', 180, 32)
name, height, age, _ = human
# or
# name, height, age, sex = human

有几种方法可以解决这个问题:

① 使用 name=human[0] 编程方式,然后在需要性别信息的地方插入 sex=human[3]

② 使用 dict 代表 human

③ 使用 namedtuple

# human = namedtuple('human', ['name', 'height', 'age', 'sex'])
h = human('James', 180, 32, 0)
# then you can use h.name, h.sex and so on everywhere.

4)字典的冗余代码

下面这样的代码经常看到:

d = {}
datas = [1, 2, 3, 4, 2, 3, 4, 1, 5]
for k in datas:
    if k not in d:
        d[k] = 0 
    d[k] += 1

实际上,可以使用数据结构 collections.defaultdict 更简单优雅地实现这样的功能:

default_d = defaultdict(lambda: 0)
datas = [1, 2, 3, 4, 2, 3, 4, 1, 5]
for k in datas:
    default_d[k] += 1

再看看如下代码:

# d is a dict
if 'list' not in d:
    d['list'] = []
d['list'].append(x)

可以使用一行代码替换

# d is a dict
d.setdefault('list', []).append(x)

同样,以下两种编程方式具有强烈的 C 风格:

# d is a dict
for k in d:
    v = d[k]
    # do something
 
# l is a list
for i in len(l):
    v = l[i]
    # do something

最好是以更pythoni的方式编写

# d is a dict
for k, v in d.iteritems():
    # do something
    pass
 
# l is a list
for i, v in enumerate(l):
    # do something
    pass

实际上,enumerate 还有另一个参数,表示序列号的起始位置。如果你希望序列号从 1 开始,则可以使用 enumerate(l, 1)。

5)使用 flag 变量而不是 for ... else

这种代码很常见:

search_list = ['Jone', 'Aric', 'Luise', 'Frank', 'Wey']
found = False
for s in search_list:
    if s.startswith('C'):
        found = True
        # do something when found
        print('Found')
        break
 
if not found:
    # do something when not found
    print('Not found')

事实上,使用 for...else 会更优雅

search_list = ['Jone', 'Aric', 'Luise', 'Frank', 'Wey']
for s in search_list:
    if s.startswith('C'):
        # do something when found
        print('Found')
        break
else:
    # do something when not found
    print('Not found')

6)循环内有多层函数调用

循环内的多层函数调用带来以下两个隐藏的风险:

① Python 中没有内联函数,因此函数调用会产生一定的开销。特别是当逻辑简单时,开销的比例将是相当大的。

② 当你稍后维护代码时,你可能会忽略在循环中调用了该函数。因此,在函数内部,将倾向于添加一些具有更大开销但不必每次都调用的函数。

例如 time.localtime();如果它是一个简单的循环,我认为大多数程序员都会将 time.localtime() 编写在循环之外,但如果引入多层函数调用则不会。

所以我建议如果不是特别复杂的逻辑,它应该直接写在循环内部而不是使用函数调用。如果必须包装一层函数调用,则应该在函数的命名或注释中提示后续维护者:此函数将在循环内使用。

6、学会如何调试非常重要

刚开始学习编程,看到代码报错,就会茫然失措,脑子中立马闪出一个'funck'。纳闷错误出在哪了?为什么会报错?

其实解决编程代码问题也是有套路的,这个套路就是:

能不用百度就别用百度,你要学会在全球最大的技术问答平方:stackoverflow上搜索问题的答案。

从解决掉的每条错误消息中学习,不要只是修复错误就完事了,了解总结正在修复的代码有什么问题,下次再碰到同类错误就能够更快地修复错误。

几年编程开发经验领悟到的一点:

要学会看代码!

会看不仅仅指认识就行,会看代码包含:分析代码编写的逻辑;尝试发现代码里的错误,寻找修复bug的方法……不要过于依赖教程给你提供的解决方案!要知道如何解决问题以及自己发现解决方案。

在自己编写还比较困难的时候,就先学习别人写的代码!先临摹,再创作,最好是找大咖的代码来学习,学习其中的逻辑,学习举一反三!

7、多总结、多分享、多输出

我个人解决这个问题的办法就是做思维导图,这个能帮助我快速清晰的把知识框架和内容过一遍,结合自己的理解和补充整理下来,然后逐步的充实自己的知识体系。

分享的话写博客、做开源项目都是很好的方式。

将自己学到的东西分享出来,一方面能检验自己是否掌握,另一方面还能加深自己的理解和认识。

比如学完之后做了一个笔记:对象详解

1、对象的组成: 对象=属性+方法 对象是由属性和方法组成的,属性可以理解为对象有什么,方法可以理解为对象能做什么。

2、对象的属性有哪些特征 对象的属性可以是抽象的属性 ~比如说洗衣机是一个对象,而且洗衣机是有颜色的,那么颜色就是一个属性,但是,颜色却是个抽象的概念,因为它可以是红色、白色、黑色、蓝色等颜色。

3、对象的属性可以是另一个对象 ~比如说计算机是一个对象,而计算机有硬盘,那么硬盘就是计算机的一个属性,所以说对象的属性可以是另一个对象。

4、大对象由小对象所组成 ~比如说鼠标是一个对象,鼠标的滚轮是一个对象,鼠标里面的单片机是一个对象等等,这时候你会发现,鼠标这个大对象是由多个小对象组成的~

总之,就像剑客对其兵刃的喜爱一样,投入精力不断打磨,总是有回报的。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

 三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、Python练习题

检查学习结果。

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值