首先呢,和其他的各种学习都一样,你一定要明白你学习的目标是什么。有的人想要通过学习Python,转行成程序员,实现行业上的转变;有的人希望通过学习Python,在现有的岗位上提升自己;当然也有很多人只是从众,说看到很多人都在学,那不如就学一学。

学习的目的性很重要,因为这样第一是可以给你树立一个远方的方向,你朝着这个方向奔跑,那跑起来就没有那么辛苦,每天都可以看到离目标前进了一些;第二是你可以根据自己的目标,去针对性的学习,例如运维开发、Web服务、数据分析、机器学习等等各个方面的细分领域,去安排自己的学习路径。

回到我自己身上,当年在学校中开始学习,C++是必修的课程,学完之后虽然能够用来完成一些有意思的功能(比如我们当年的大作业就是使用MFC去编写一个地图应用),但是当时一点都没有让我感到编程的乐趣。

我是如何开始Python的学习的呢?当时我有一个目标,是想要去喜欢的一个网站实习,那个网站是用Python进行开发的,以此为契机开始了自己的学习。

对于学习编程而言,可能很多课程、很多同学都会陷入一个陷阱,那就是只知道要学什么,但却不知道为什么去学。如果没有跳出这个陷阱,别看课程上教授的内容很多(我们当年的C++就学了一年呢),但完全没法将学习编程的过程变为自驱的过程——也就是学习本身应该是推动你去进一步学习的。

我们回过头来看看编程的基础,总共就四大块:

这四个基本元素难么?实际上很多同学可能用一天的时间就扫完了对应的知识点。但是简单么?实际上也不简单,因为很多同学,甚至可以毫不夸张的说:有超过70%的普通工程师都还不能脱离搜索引擎写出只有上述的逻辑的业务代码。

编程的本质是什么?本质是利用编程语言,命令计算机按照自己的意思,符合一定的流程去完成功能。学习Python和学习其他的各种编程语言没有特别大的区别,都是要理解“我学的这段代码,它能让计算机完成什么样的事情”。

举几个栗子:

二进制

有很多计算机基础的书籍和课程,上来就是一大堆二进制的计数规则,有的同学可能理解得好些,知道在计算机里,我们只能够用01来表示各种数据,因此也知道了整型是如何存储上去、浮点型是如何存储到二进制上去的。但是随着时间的推移,一般的编程工作根本不会涉及到如何去操纵二进制的数据,只要不经常用,很快这个知识点就会被淡忘了

实际上二进制还可以怎么在现实世界中发挥作用呢?0和1,实际上是可以表达某个事物是否具有某一属性的,比如数据分析中常用的RFM,就是要去判断是否新用户、是否充值、是否大客户、是否频繁购买。而这样的表示实际上就可以通过二进制进行操作:

既然可以用二进制存储某一个用户的标志了,那么就会涉及到:如何读取出来、如何设置上去,也就是读-写的逻辑。

计算机世界有非常多的地方都用到了这个技巧:如下图所示:

控制流:循环、判断

控制是编程最核心的内容之一,因为直接决定了我们如何让计算机帮我们完成繁琐的、重复的工作。

在Python中,循环也和各种数据结构能够无缝连接起来。

基础类型

除了上面我们讲到的整型,字符串这个数据类型也非常重要,整个互联网都是基于字符串和更底层的字节流的。

我们在网页上看到的知乎,也是由客户端组装HTTP请求、服务端返回HTML、CSS、JS、json完成的整个过程,这里面涉及到的都是如何处理字符串。

在使用爬虫,在各种网页中读出数据的时候,就一定会涉及如何处理字符串。

而绝大部分对字符串的处理,Python的字符串成员函数都已经包含了。

数据结构

Python中有四种最常用数据结构,tuple、list、dict、set。

什么是数据结构,实际上是数据按照一定的规则,排布在我们的内存中,以及可以通过数据结构的特性,完成一定的功能,例如列表可以用来做顺序的数据存储,排队、堆积的书籍,都是列表的一种具象表现。字典则可以用来做快速的查找,平时由首字母查到字典中的范围、查看对应关系都可以用字典来表示。

在理解了这些数据结构之后,完成日常的工作就基本没有问题了。

记得当时我学完这一块,就可以用它算出每天空闲的自习室了,实际上就是set的求交集的功能:第一节课没有课的自习室是S1,第二节课没有课的自习室是S2……最后拿到一整天的全部自习室的安排,就把这些个自习室全部求一边交集就好了。这个功能还是相当方便的。

标准库和第三方库

为了简化自己的工作,标准库和第三方库都是非常有必要的,因为很多功能都是前人已经完成的,例如实现一个计数器、发起http请求、解析html网页,以至于现在Python丰富的数据处理生态,从pandas,到numpy,到机器学习sklearn,到深度学习也有TensorFlow和PyTorch。

这些库实际上提供的就是拆箱即用的工具包,可以免费、自由地获取,然后通过短短的几行代码,完成特别繁杂的操作。

最后,学习Python到底是在学什么,很多工作了很多年的工程师都无法脱离搜索引擎,这是为什么,实际上就是他们并没有完整地掌握Python的基础。这些基础实际上就是建筑师的砖头、画家的颜料、印刷术的活字。

编程就是将自己学会的东西组装出程序来,因此真正属于自己的这部分,是你能够用来自由地舞动键法的武器。在编程世界中大杀四方,不仅要学好基础,把自己的武器打造得锋利,而且学习剑法最好的方式是上场杀敌,不如你想想最近有什么工作如何用编程解决,它可以是处理一大批excel文档,也可以是从网页上把所有数据一次取下来,还可以是把庞杂的文件夹整理清楚。

当然!千万别忘了:一场战争之后,最重要的事情是仔细回顾,前面写的程序涉及了哪些基础知识,哪些基础知识是你还掌握不好的,能不能用更Pythonic的方式解决对应的逻辑。

正确的学python方式的更多相关文章

  1. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  2. 简学Python第一章__进入PY的世界

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  3. 小朋友学Python(4)

    Mac下安装Python 3 Mac系统会自带Python 2.7.x.安装Python 3时,不要卸载Python 2.7.x,因为有Mac系统有一些库会依赖于Python 2.7.x. 安装步骤: ...

  4. D06——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D06 20180821内容纲要: 面向对象初级学习 1 面向对象 2 类 (1)封装 (2)继承 (3)多态 3 小结 4 练习:选课系统 5 课外拓展:答题系 ...

  5. 我们一起学Python之——认识Python"规则"

    前言: 开学后,跟预想的一样,开学第一天我们就开了Python,虽然之前早就预料到了,但对于一直学Java的我来说,内心还是有一些涟漪的.总归还是要接受的,还不如振作起来,认真对待.我决定从最简单并且 ...

  6. 小白学 Python 爬虫(7):HTTP 基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  7. 小白学 Python 爬虫(10):Session 和 Cookies

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  8. 小白学 Python 爬虫(21):解析库 Beautiful Soup(上)

    小白学 Python 爬虫(21):解析库 Beautiful Soup(上) 人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前 ...

  9. 小白学 Python 爬虫(32):异步请求库 AIOHTTP 基础入门

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

随机推荐

  1. fiddler 一些不为人知的功能

    1. fiddler的ctrl+F查找功能 可以进行正则表达式查找: 勾选Regular Expression,find中出现REGEX:,在这后面输入正则表达式即可进行匹配查找 2. fiddler ...

  2. BZOJ 4265 货币系统

    今天比赛的时候做到的.题解写得很简单,但是感觉对于我这种蒟蒻还是很有思考的价值的. 题面(由于题面很短,就不概括了):小Q当上了新的宇宙大总统,他现在准备重新设计一套货币系统. 这个货币系统要求一共有 ...

  3. elipse使用,Java和Javaee模式区别

    Java带有用户界面的基本ide,缺少数据库和web开发工具 IDE(Integrated Development Environment,集成开发环境).集成开发环境(简称IDE)软件是用于程序开发 ...

  4. 《DSP using MATLAB》Problem 7.27

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  5. 《DSP using MATLAB》Problem 7.23

    %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output Info a ...

  6. Thread.yield( )通俗理解

    一. Thread.yield( )方法: 使当前线程从执行状态(运行状态)变为可执行态(就绪状态).cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不 ...

  7. JSP+javaBean:简易投票网页练习

    一.项目目标 session作用域中如果不及时清理一些对象,在一定久的时间或相当数量的请求后,造成session中大量对象堆积,这将严重影响服务器的性能. 在本实例中,通过写一个jsp与javaBea ...

  8. 记SCOI2019

    离精英体验营结束已两周的,要哭的要笑的现在也一定释怀了.是时候冷静分析一下这次的考试了.时间序虽然有流水账的嫌疑,但这毕竟是OI界的流行风气. day0 早上坐学校包的商务车去了电子科技大学.走在来过 ...

  9. js求两个数组的交集|并集|差集|去重

    let a = [1,2,3], b= [2, 4, 5]; 1.差集 (a-b 差集:属于a但不属于b的集合)  a-b = [1,3] (b-a 差集:属于b但不属于a的集合)  b-a = [4 ...

  10. springboot 添加 jsp支持

    idea 新建springboot项目 packageing:选择 war next   勾选web 添加jar包 <dependency> <groupId>org.apac ...