- 作为一个自学者,最重要的能力就是自学的学习能力。
但不用过分担心浩瀚的计算机世界,因为计算机的底层知识变化是很慢的,比如我们用到的网络知识,几十年都没变化过。就算是最热门的人工智能,现在大家学习的大部分技术也都是十几年,甚至几十年前的技术。变化快的是上面的花架子。 打好底层的基础,学会如何快速学习上层的花架子,其实吧,学习python没那么累。Python之所以强大,一个原因是它有丰富而强大的包,不管你想处理Excel,还是做人工智能,都能找到相应的包,直接拿来使用。我们掌握了Python编程基础知识后,剩下的就是快速学会使用这些包来解决自己的问题。
1 必须的掌握的核心知识
-
为了能够有效的学习和应用下面的技巧,我们必须先掌握Python和编程的核心概念。 -
如上图中:下面绿色方块中的编程语言基础是我们必须先学好的部分,剩下的就是按需学习一个个模块。而左边黄色通用技术和高阶知识可以按需学习。 先来看看那些是必须要先学好的知识: 1.程序的基本结构:表达式,语句,循环,分支,代码块。 程序是由一个个语句组成的。有的语句就一行代码,如赋值语句;有的语句是一个甚至多个代码块,如循环语句和分支语句。语句中包含表达式。表达式表达了运算的过程,如算术运算,逻辑运算,函数调用等。总之,给你一段程序,你能熟练看懂它的结构。如果它的结构有问题,你能轻松的指出问题所在。 2.固定值,变量和变量类型 代码中操作的数据要么以固定值的形式出现,要么是以变量的形式出现,而变量要先定义再使用,没有定义就使用必然会报错。看到变量要意识到他是否已经定义了,在哪里定义的,它的作用范围是什么。有可能同名变量在多个地方都定义了,要清楚的知道当前是那个变量。另外,时刻意识到任何一个变量都是有它的类型的,整数,小数,字符串,列表还是第三方包定义的类。类型决定了它有哪些方法。 3.函数和作用域 清晰的理解函数的名称,参数,返回值等要素,以及变量的作用域。知道常用的Python自带函数,如len()等。有些函数来源于某个模块,有些函数属于某个类,有些函数是我们自己定义的。不管变量还是函数都有其使用范围,有它们所属的命名空间。 4.面向对象 Python是一个面向对象的编程语言,我们要使用的各种Python自带的包或者第三方包大都是以面向对象的形式写的。理解类和实例的区别,以及相应的实例变量和类变量,实例方法和类方法等。 5.模块和包 模块和包是Python组织代码的方式。熟悉import的几种用法。能熟练的使用pip安装,更新和卸载包。对于中国程序员,会配置pip的中国镜像站点。
2 有问题,先问Python
- 写代码过程中遇到不会的问题,最好的方法不是问别人,也不是去搜索,而是问Python:在交互式Python中直接运行做尝试,Python会告诉你是否行得通,哪里有错。记住:Python解释器才是你最好的老师,它24小时陪伴着你。 假设你想知道字符串是否可以相加。‘你好’ + ‘秃头叔’ 能行吗?这种问题根本不用去问别人或者去网上搜索,打开交互式Python,实验一下就知道了:
很快就可以实验出来,字符串加法是可以的,也可以乘以数字,但是减法和除法是不行的。复杂点的代码可以写到文件中,总之用代码去测试,有问题,先Python。 自己没有试验过,没有问过Python,最好不要去问别人,尊重别人的时间。这是程序员应该具备的素养之一。 当然,这个技巧需要你对Python基础知识有一定的掌握,否则你都不知道怎么问Python。
3 问Python的3个命令
1.type - 了解类型 在写代码中,在学习新包的过程中,我们也要知道这个包中主要有哪些类,当前处理的这个变量是什么类型,否则程序报了错你都不知道怎么回事。 使用type()函数可以了解变量的类型。
import requests
res = requests.get('https://www.baidu.com')
type(res) <class 'requests.models.Response'>
使用requests.get()方法抓取百度的首页,返回的不是字符串,而是一个Response对象。知道了它的类型,我们可以深入研究Response对象包含哪些属性和方法。不管在搜索相关资料,还是讨论相关问题中,都会更加有效。 requests是什么呢?请记住,所有的变量和固定值都属于某个类型。
type(requests)
<class 'module'>
requests是一个模块,说的简单点就是一个python文件,里面定义了一些全局变量和函数。有哪些变量和函数呢?它的源代码在哪里呢?请继续阅读。 2. dir - 查看有哪些变量和函数 dir可以查看一个模块或者一个类中有哪些变量和函数,以requests为例:
dir(requests)
['ConnectTimeout', 'HTTPError',..., 'warnings']
dir返回一个list,里面包含当前类或者模块中的:全局变量,函数,类,子模块等。 3. help - 查看详细文档 通过help,可以查看函数或者类的详细文档
import turtle
help(turtle)
命令行会显示详细的turtle文档: 也可以查看一个具体函数的文档,下面来查看turtle包中的Turtle类的fd函数的说明:
help(turtle.Turtle.fd)
这里就容易懂多了,不仅说明了函数的功能,还给了代码例子。
4 学会看文档
官方文档通常是最好的学习资料之一 1.去Python的官方文档站:https://docs.python.org/3/ 2.在网页的左上角,选择简体中文和Python版本 3.就可以看到各种文档了,初学者可以先看入门教程,有明确目的可以看语言参考或者标准库参考。 4.也可以在右上角搜索关键词: 5 学习新的包 程序员之间有一句话叫做“不要重复造轮子”,意思是说你要解决的问题很可能有人已经帮你做好了,你只要拿来用就行了。在Python的世界里,就是找到合适的包。 5.1 确定用什么包 以处理Excel为例,有很多处理Excel的包,有的可能是给老版本Python使用的。我们要花点时间确定那个包是最适合的。 最简单的方式是直接搜索一下,看看大家怎么说。搜索的格式建议为:Python 关键词 包 不要着急下结论,认真读完前面几个文章,看看大家推荐什么,这些不同的包之间有什么区别,适用于什么场合。耐心一点,这里花1个小时找对包,后面可以节省你几个小时,甚至几天的时间。假设我们确定要使用openpyxl,就可以继续下一步了。 5.2 找到包的主页 确定了包的名字就可以去找到包的官方主页了。https://pypi.org是Python的包的大本营。上这个网站,搜索你确定的包的名字:可以看到除了基本介绍,还有一些代码参考,以及官方文档的地址。 5.3 找到包的文档 查看官方文档是很重要的。有时候官方文档的链接可能在网页的左边栏。总之认真在页面上找到官方文档的地址,然后进入官方文档:进入官方文档后,剩下的就是认真看文档的内容了。大部分包的文档质量都很好,包含了常见的用法和要解决的各种问题。有的甚至有中文的文档,认真在网页上找一下,看看有没有中文文档的链接。也可以搜索一下,用谷歌搜索“openpyxl 官方文档 中文”第一条就是中文的官方文档。用百度搜质量就很差了,慢慢找也可以找到这个网站。 5.4 运行文档中给的参考代码 接下来,尝试运行文档中给的参考代码,至少是前面几段最重要的参考代码,一步步走下去。走完以后,你就对这个包就有不错的理解了,可能已经知道如何解决你自己的问题了。 5.5看源代码 学习一个模块,更高点的境界是直接看它的源代码,你甚至可以为了去修改它的源代码。使用__file__属性可以找到源代码的所在地,Python自带的函数和部分模块是用C语言写的,无法看到Python的源代码。
turtle.__file__
'/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/turtle.py'
import openpyxl
openpyxl.__file__
'/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/openpyxl/__init__.py'
|