Python
自学
Python 入门

怎么自学python,大概要多久?

关注者
18,158
被浏览
8,123,780

799 个回答

学编程语言有个小秘诀,直接上项目就是干,做完后你就是pythoner了。

不要怕没有基础,边做边查边学,进步很快的。

因人而异,一周或者一个月就能搞定。当然需要足够的投入。

以前我也觉得收集资料、啃语法、敲代码是学python的套路,但这样学效率太低。

你要知道python是一门脚本语言,不需要传统的编写-编译-链接-运行过程,语法简答、执行方便。

也就是说python像是个瑞士军刀,可以写出很多有用的小工具,随写随用。

我在python专栏里写了很多python应用案例,其实大多是对新手友好的。


下面介绍适合新手的python小项目:

贪吃蛇小游戏

用100行python代码写个贪吃蛇小游戏,也不复杂但涵盖了大部分python语法。

项目地址: gitee.com/codetimer/Sna

可以尝试着先复制代码运行一遍,然后自己写。

人脸识别

调用开源项目,只需要简单的几十行python代码,就可以实现人脸识别。

从图片里找到人脸:

配合其它的Python库(比如opencv)实现实时人脸检测:

项目地址: github.com/ageitgey/fac

中文分词&情感分析

这个也比较有意思,可以爬取电商评论数据,然后分词处理,并做情感分析,判断好评、差评。

jieba可以用来做分词处理

github.com/fxsjy/jieba

snownlp可以用来做情感分析

import snownlp
sentense = '''亲,第一天秒杀买,比第二天的正常价还高,
说保价7天申请售后说退差价也比不退,你们还有信誉吗
            '''
result = snownlp.SnowNLP(sentense)
a = result.words  # list
b = result.sentiments  # float
print("%.2f" % b)

github.com/isnowfy/snow

车型识别

这里使用python调用百度的车型识别模型,只要导入车辆图片可以自动识别车型。

import requests
import base64
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

# 输入你的api_key和secret_key,获取地址https://console.bce.baidu.com/ai
api_key = ''
secret_key = ''
url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + str(api_key) + '&client_secret=' + str(secret_key)
res = requests.get(url).text
a = eval(res)
access_token = a['access_token']
animal = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/car?access_token=' + str(access_token)
header = {
    'Content-Type':'application/x-www-form-urlencoded'
}
data = {}
with open('timg.jpg', 'rb') as f:
    image = base64.b64encode(f.read())
    data["image"] = str(image, 'utf-8')
    res2 = requests.post(url=animal,data=data, headers=header).text
    print('颜色:',eval(res2)['color_result'])
    print('车型预测')
    for each in eval(res2)['result']:
        print(each['name'], '\t相似度:', each['score'])
    plt.imshow(mpimg.imread(f))
plt.show()

用Python实现所有常见算法

这个项目包含了上千个算法的Python代码实现,几乎囊括了大部分常见算法。

包括回溯、布尔代数、元胞自动机、线性回归、图算法、网络流等等

以排序为例,该项目提供了近50种算法,比如下面的树形选择排序:

"""
Tree_sort algorithm.
Build a BST and in order traverse.
"""


class node:
    # BST data structure
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None

    def insert(self, val):
        if self.val:
            if val < self.val:
                if self.left is None:
                    self.left = node(val)
                else:
                    self.left.insert(val)
            elif val > self.val:
                if self.right is None:
                    self.right = node(val)
                else:
                    self.right.insert(val)
        else:
            self.val = val


def inorder(root, res):
    # Recursive traversal
    if root:
        inorder(root.left, res)
        res.append(root.val)
        inorder(root.right, res)


def tree_sort(arr):
    # Build BST
    if len(arr) == 0:
        return arr
    root = node(arr[0])
    for i in range(1, len(arr)):
        root.insert(arr[i])
    # Traverse BST in order.
    res = []
    inorder(root, res)
    return res


if __name__ == "__main__":
    print(tree_sort([10, 1, 3, 2, 9, 14, 13]))
© 2021 GitHub, Inc.

其他排序:

项目地址: TheAlgorithms/Python



其他还有很多可以实操的小例子

如果想看书学习,之前我也写过一些推荐


基础语法看教程确实够了,但有的人会觉得枯燥,学东西还得有趣不是。

那就推荐去找找视频,搜python,排名靠前的教程都还不错。

有人在问买什么书看,我一向都是看网上教程的,新手非要看书的话,是有那么两三本。

零基础可以看python编程从入门到实践,书后面有不错的案例。

还有一本是注重实践、解决问题的书,叫作python让繁琐工作自动化,适合有点基础的选手。该书是从爬虫、自动化表格、邮件收发、桌面控制等角度来写的,比较贴合日常工作场景。

还有一本比较好的是python cookbook,是本工具书,而非语法书。

工具书当然是为了解决问题,所以cookbook的风格就是对症下药,先提问题再讲方法。

这本书不太适合小白看,因为里面概念比较多。

如果你英文好的话,当然首选看英文版,表达更精确。

ipython-books.github.io

也有中文版,看起来不费劲。

python3-cookbook.readthedocs.io

纸质也出版了。

好了,说的有点多。

看到这里,大家不要忘了关注 朱卫军哦,还写了好多好多好多~

编辑于 2023-07-30 14:36

先上两张图,直观的了解一下 Python 的学习路线、基本构成与实际应用。

本内容较长,建议点赞收藏♥

Python 环境搭建

使用 Python 首先需要搭建 Python 环境,我们直接到 Python 官网 下载自己对应平台和版本的安装包进行安装即可,如果不清楚 Python 环境搭建,Windows、Mac 和 Linux 用户都可以参考如下内容。

Python 开发工具

俗话说:工欲善其事,必先利其器,就编程来说,有一个得心应手的开发工具也是十分必要的。

Python 开发工具有很多,比如:PyCharm、Jupyter、VSCode 等,我们选择一个自己用着顺手的就行,如果是新手的话,建议首选 PyCharm,可以节省配置时间,快速上手

PyCharm 下载安装

PyCharm 使用详解

Jupyter 介绍与使用

VSCode 介绍与使用

如果你觉得 Python 环境及各种工具包管理起来十分麻烦,这时可以考虑装一下 Anaconda,它可以很方便的管理工具包、开发环境、Python 版本等,而且安装时能自动安装相应的依赖包。

搭建 Python 高效开发环境: Pycharm + Anaconda

Python 入门学习

现在网上有很多免费的 Python 教程,想要入门 Python 还是比较容易的,下面分享几个免费学习 Python 的地方。

官方文档

Python 学习手册

Python 面试指南

Python 入门必备知识

Python 经典实用练手项目

100 个 Python 小例子(练习题)

一张思维导图囊括所有 Python 基础知识

240个Python练习案例附源码(百看不如一练)

一张思维导图囊括所有 Python 基础知识清晰大图

浙江大学内部Python教程(教材PDF, PPT课件, 源码)

Python面试大全PDF(基础+Web+爬虫+数据分析+算法等)

在学习基本语法的同时,我们可以做一些练习题来检测一下自己的学习成果。

分享一些 Python 实战项目,毕设可用。

Python实现商场管理系统

Python实现门禁管理系统(源码)

Python实现物流管理系统(附源码)

Python 实现学生在线考试管理系统

Python 实现的学生培养计划管理系统

Python实现文献数据挖掘系统(附源码)

Python实现教务信息管理系统(附源码)

Python实现疫情医疗信息管理系统(附源码)

Python实现学生教师刷脸签到系统(Flask)

Python实现实验室药品管理和预警系统(毕设源码)

Python招聘岗位信息聚合系统源码(爬虫爬取、数据分析、可视化、互动等功能)

如果在学习基本语法时觉得有一些枯燥乏味,这时可以找一些有趣的小例子来练练手,以此来增加自己的学习兴趣。

我们知道书籍相对于网络教程可能会更加系统和深入一些,而且通过书籍来进行学习的成本相对也是比较低的。

如果想看书的话,可以看看下面我之前这个回答中推荐的书籍,Python 入门进阶、网络爬虫、数据分析、Web 开发、机器学习、深度学习都有推荐,可以做个简单的参考。

Python 实际应用

Python 在现实中有着广泛的应用,比如:爬虫、数据分析、自动化办公等等,下面展开来说一下。

1. 爬虫

提到爬虫,相信绝大部分人的第一反应就是 Python,尽管其他编程语言一样能写爬虫,但在人们的印象中,爬虫似乎与 Python 绑定了一样,由此可见爬虫在 Python 中的分量。

看一张 Python 爬虫思维导图,直观的了解一下 Python 爬虫知识体系。

下面分享一些 Python 爬虫相关内容,可以做个简单的参考。

2. 数据分析(可视化)

Python 在数据分析领域同样有着广泛的应用,先看一张 Python 数据分析思维导图,直观的了解一下 Python 数据分析过程。

下面分享一些 Python 数据分析(可视化)相关内容,可以做个简单的参考。

3. 自动化办公

无论是程序员还是其他行业的工作人员,自动化办公都能起到事半功倍的效果。

4. Python Web

Python Web 应用也是比较多的,Web 框架有很多,比如:Django、Tornado、Flask、Twisted 等,其中 Django 和 Flask 应该是最常见的了,下面分享一些相关内容,可以做个简单的参考。

Flask 中文文档

Flask 优秀资源大全

Django 优秀资源大全

5. 人工智能 & 深度学习 & 机器学习

深度学习是一种实现机器学习的技术,机器学习是一种实现人工智能的方法。下面分享几个相关的学习内容,可以做个简单的参考。

PyTorch 官网

TensorFlow 官网

神经网络可视化工具集锦搜集

PyTorch 学习手册中文版 PDF

TensorFlow2.0 学习手册 PDF

机器学习闯关200题,你能闯几关?

每个人的学习能力和起点可能有所不同,每个人要达到的目标可能也不同,如果要达到入门水平,平均可能需要几周的时间;如果要达到能够找工作的水平,平均可能需要几个月的时间;如果想要不断提升自己的话,就需要长期学习了。加油吧(ง •̀_•́)ง,骚年!

@Python小二 就先分享到这了,有帮助,就点个赞吧~

编辑于 2022-09-21 21:18

说到python,不得不提一下廖雪峰。国内自学python的应该很少有人不知道他的。

廖雪峰老师:曾任职西门子、摩托罗拉、火币网等知名公司高级技术专家;其官方博客是很多技术人常用的参考教程,日访问量达5万+。

完全零基础的话,建议花5个小时去听一下他的python入门课。(免费的)

官方介绍:通过本课程的学习,您将学会搭建基本的Python开发环境,以函数为基础编写完整的Python代码,熟练掌握Python的基本数据类型以及list和dict的操作。

课表如下:

看完之后,按照下边的流程自己挑感兴趣的去学【备注推荐的强烈建议去看,特别是项目的】


以下内容划重点:各种学习资源推荐入门:

一、入门

1.廖雪峰的官方网站教程(必学)

liaoxuefeng.com/wiki/10

2.100天学python(选学)

github.com/jackfrued/Py

3.python初学者教程(选学,无聊时可看看)

github.com/Yixiaohan/co

二、进阶:

1.Python3高级核心技术97讲(慕课网视频,推荐学习) coding.imooc.com/class/

2.python各种标准库(尤其是时间操作、文件操作、多线程、多进程、协程的使用) docs.python.org/zh-cn/3

三、web:

1.requests库(必学)

2.python-requests.org/z


2.django(必学)

django官方文档(当做工具书用)

djangoproject.com/


3.djangorestframwork官方文档(看Quickstart部分)

django-rest-framework.org


4.Vue+Django REST framework打造生鲜电商项目(慕课网视频,推荐学习)

coding.imooc.com/class/


5.强力django+杀手级xadmin,打造上线标准的在线教育平台(慕课网视频,推荐学习)

coding.imooc.com/class/


tips:学完这两个实战课程,我敢保证你应该可以用django搭建一个自己的网站了,但不建议一点基础没有就开始学习实战

四、其他

1.python面试题(taizilongxu版)

github.com/taizilongxu/


2.python面试题(剑指offer)

github.com/JushuangQiao


3.awesome-python(各种好库推荐)

github.com/vinta/awesom


五、书籍:

推荐大家看下面两本书:

1.《python程序员面试算法宝典》


2.《Python Linux 系统管理和自动化运维》

整体学下来一般来说是3-6个月左右。

觉得有帮助的话就点个赞吧。


20210617更新:

推荐两门100元以内的python课,都是大厂在职的技术大牛来讲(不像培训班的老师,很多经脱离职场很久):

前游戏公司技术总监 尹会生: 零基础学Python_Python_Python入门-极客时间

Facebook资深工程师 景霄: Python核心技术与实战_Python_Python进阶-极客时间

第一个适合新手学python的,讲解的比较细,第二个适合有一定基础的。

编辑于 2021-06-17 11:24

我不喜欢一上来就推荐一堆参考资料的东西,那只会让初学者更迷茫。好比一个婴儿,你告诉他学会走路的方法有100种,他只会变的对走路毫无兴趣,他要的只是一种最有效的学会走路的办法,而不是100种。
同样的,下面介绍的是我之前刚开始自己学习python的1种方法,只需要1种就可以了。

第1步,基础入门
很多人喜欢搞一本厚厚的书来看,虽然看完了但是还不会用Python,这是最大的悲哀。
伤心吧?难过吧?
其实,你只需要,看菜鸟教程网站的这个教程就足够了,网站地址:
Python3 教程 | 菜鸟教程

如果你是刚开始学习编程的新手,没看懂,多看几次就会了。虽然这个过程会很乏味,但是对于你建立牢固的编程思维是必须的。
这一阶段的辅助工具:
当你看到无法理解的代码或者概念时,可以将代码复制到下面这个网站,它会将你的代码用图形化的方式显示出来,便于你理解: pythontutor.com/visuali

如果你不知道代码在内存中是如何运行的,不妨把它拷贝到Tutor里可视化执行一遍,加深理解。
举个栗子 ,比如你在学习Ptyhon中的字典数据结构,但是不太理解这个概念,那么你就可以将书中代码输入,然后点击下面红框汇中的按钮。

就会运行处以下的图形结果,对着图形理解概念,不要太爽哦。


第2步:数据分析进阶
上面第1步已经打好了Python编程的基础,现在进入数据分析的学习阶段。推荐一本书《利用Python进行数据分析》就够了,这本书在豆瓣评分是8.5分。

看到书里涉及到到当统计概率知识看不懂的时候,这时候反过来再学习统计概率的知识。
很多人错误的学习方式是,先学习统计概率,再去学习数据分析编程工具(Excel,Python,R)。最后抱怨太难了,学不会。
这其实学习方法是错误的。这是为什么呢?
有两个原因:
1)因为很多统计概率讲的都是复杂的数学公式,却不讲统计概率在生活中如何应用的。这样造成的结果就是你学习了很多,但是也忘记了很多。
2)统计概率知识大多数时候是理论基础,如果不结合数据分析工具(Excel,Python,R)来使用,你肯定学不会。
比如你学习了四分位数的理论,但是如何在实际中使用的,你不会数据分析的工具,你当然不会用了。
但是如果你会数据分析的工具,实际操作就一行代码,四分位就计算出来了。你当然兴奋了,一高兴学习兴趣也就上来了。
所以,我的建议,也是正确的学习方式是:先学习基础的数据分析工具用法,当遇到统计概率知识的时候,再来补这个知识,边学习边用数据分析工具实现一遍。

这一阶段的辅助工具:
如果你想通过做实际项目来学Ptyhon,可以试下《5 个适合 Python 数据分析初学者的项目》:
Five data science projects to learn data science

3. 数据分析高级-统计概率知识
统计概率知识学习其实很简单,只是很多老师和书把这个东东讲复杂了。学会下面图中的知识,你就可以学会统计概率了:

简单解释下,上面的图。

如果你的学习目的是:提高认知,将统计概率应用在生活中,用于指导你面对重大决策时做出最好的选择,你的应该看《赤裸裸的统计学》这本书就够了。
如果你的学习目的是:学习大数据的基础知识:统计概率,希望成为数据分析师,实现升职加薪的目的,那你的学习参考书是《深入浅出统计学》或者《商务与经济统计》。
《深入浅出统计学》适合没有任何统计概率基础的人学习,这本书足够有趣和简单。
如果你之前上学学习过一些统计概率的课,但是最后还是把课堂学的内容还给了老师,你应该选择看《商务与经济统计》这本书来重新巩固你的基础知识。
学会高级知识,你就不再是一个苦逼的搬砖了,而且会帮助你实现年薪增幅的目标。

4. 学习遇到困难,去哪找帮助?
只要是学习就会遇到困难,遇到困难怎么办呢?
1)首先,你需要使用某搜索引擎查找问题(你知道我说的不是百度),一般都能查到你问题的答案。学会用英文搜索真的很重要。
2)利用某搜索引擎查不到答案的话,当然是找前辈们帮忙了。不过问了不一定有人回复,为了解决这个问题,你可以留下你的问题,我看到会回复的。
3)最后记住,学习Ptyhon的目的,不是为了学一门编程语言而去学习一门编程语言,你的出发点应该是要完成什么项目,带着目标去学习。


编辑于 2024-02-26 15:29
学习python是一个长久的事情,但如果你想用python做些事情,那很多时候1个月左右的时间就已经足够了。
你首先要花一些时间熟悉一下pytho语言的语法,这个不难,也正是python的优势。
之后就是根据你的需要,去了解一下常见的第三方库,并且找一些好的项目实践,通过实际项目提高这一方面的技能。
现在Python主要的应用领域有爬虫、网站开发、数据分析和可视化、机器学习和AI等,每个人可以先想到自己想深耕于哪个方向,还是开始学习。

一、 打好基础

Python的语法还是比较简单的,掌握以下几个知识点,基本可以让你上手大多数的第三方库:

1. 基础知识点

  1. 变量类型
    1. 字符串:str
    2. 整型:int
    3. 浮点型:float
    4. 列表:list
    5. 字典:dict
    6. 集合:set
    7. 元组:tuple
  2. 逻辑判断
    1. if ... elif ... else...
    2. for loop
    3. while loop
    4. try ... except ...
  3. 函数和类
    1. 函数:def 和 lambda
    2. 类:class
    3. 库:module

2. 学习资源分享

这部分基础知识,对于没有编程经验和基本知识储备的小伙伴,要求独立上手可能会比较难,其实这就可以利用现在丰富的网络资源进行学习,比如一些大佬分享的视频资源和线上培训机构的编程课程:

1. 小甲鱼的零基础入门学习Python

  • 地址: bilibili.com/video/av40
  • 播放量:1684万
  • 说明:这是在B站所有python入门课程中,播放量最高的视频资源了。整个系列一共有97集视频,涵盖了90%的python基础知识点和应用场景。对于初入门的新手小伙伴非常友好,很适合零基础的小伙伴学习。

2. 麻省理工计算机科学导论及Python编程公开课

  • 地址: bilibili.com/video/av10
  • 播放量:11万
  • 说明:MIT原生python课,近距离接触名校资源,英文原生字幕同时可以训练英语听力。如果英语不够好的同学也不用担心,打开弹幕还能惊喜地发现野生字幕组为您分享中文翻译,观看无障碍,学习也扎实。

3. 李宏毅讲机器学习

  • 地址: bilibili.com/video/av10
  • 播放量:85万
  • 说明:想通过python学习机器学习,但又苦于吴恩达大佬全程英文授课听不多的小伙伴,可以看向这里,国内大佬李宏毅的机器学习知识分享。涵盖了回归、分类、梯度下降、反向传播、Keras使用等多个常用基础知识点。

4. Python数据结构与算法系列课程

  • 地址: bilibili.com/video/av21
  • 播放量:22万
  • 说明:不了解数据结构和算法的程序员是不合格的。推荐给完成Python基础知识学习的童鞋,介绍数据结构和算法,完善对python的理解,也帮助有志成为IT大佬的同学掌握计算机系统性的知识,早日向更多实用技术和编程语言迁移。

二、了解以下常用的第三方库

Python的应用领域有很多,基本想得到的功能,你都可以在github上找到相应的库
但主要的应用还是集中在以下4个方面
  1. 网络爬虫:如requests、bueatifulsoup4、selenium等
  2. 网站开发:如flask、Django等
  3. 机器学习:如tensorflow、sklearn、keras、pytorch等
  4. 人工智能:如nltk、gensim、opencv等
  5. 数据分析:如numpy、pandas、matplotlib等

我之前在我自己的文章里整理了一些常用的开源库,有需要的可以进链接看看:


三、实践项目

有很多可以找到实践项目的网站,比如
  • github: github.com
  • 实验楼: https://shiyanlou.com

下面是我整理的一些网上搜集到的对新手比较友好的项目,方便大家上手;

有具体学习方向或应用领域的同学,可以直接拉到本贴底部,有专门领域的公开项目整理。
关注老K玩代码,相关内容还会持续更新,关键词“Python”可以获得完整内容

1. faceai

地址: github.com/vipstone/fac
star: 6.8k
fork: 1.7k

这是一个包含了人脸识别、轮廓识别、头像合成、视频对象提取、图片自动上色、眼动追踪、换脸等功能的人脸ai开源项目。



2. Deepdream-Google的开源图像识别工具

地址: github.com/google/deepd
star: 12.5k
fork: 3.1k

这是一个由google开发的开源图像识别工具,帮助您以最快的速度熟悉图像识别相关的知识




3. 用机器学习来减肥

地址: github.com/arielf/weigh
star: 3.3k
fork: 150

这是一个机器学习的项目,作者Ariel想要减肥,通过数据,他为自己制定更科学的减重方式。我们可以通过他代码,了解生活中应用机器学习的案例。




  • 感谢您一路读到了最后,部分内容整理自网络,侵删
  • 如果这篇文章对您有帮助,请记得点赞分享这篇文章。
  • 如果对文中的内容有疑问、错误或有意见想告诉我,欢迎留言


编辑于 2024-04-26 10:07

以前我会写一堆教程,然后附上茫茫多的资料,现在我悟了,N个工具都不如一个好工作好使。

那就是ChatGPT,你没看错,就是现在巨火的AI工具。

首先你不会python对吧,你可以让它告诉你python是什么,可以用来干什么。

牛不牛吧,代码也给你了。

import urllib
from bs4 import BeautifulSoup

url = "Example Domain"
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html, "html.parser")

# 提取网页中的文本
text = soup.get_text()

# 提取网页中的链接
links = []
for link in soup.find

然后你知道要学爬虫的话,得先学习Python的基础知识,包括变量、数据类型、控制流和函数等。

好,你也不用查资料,你问它就行了。

你就说够不够细吧。

然后我们可以通过一个例子来学python的基本语法。

全是字母+汉字,够简洁明了了吧?

连怎么注释都给你解释的明明白白。


另外,如果看不懂某段代码是怎么运行的

比如说这个,忽略掉注释


明明白白的。


再比如说,你想学数据分析,想要分析一个高中的成绩,把高三中总分排名10%,但是存在单科成绩不在前10%的学生筛选出来。

你直接问就行了,剩下的只需要看懂它的代码,并且修改成你想要的程序就可以。

#导入必要的库
import pandas as pd
#读取成绩数据
df = pd.read_csv('high_school_grades.csv')
#按照总分排名前10%的学生筛选出来
top_10_students = df[df['total_grade'] >= df['total_grade'].quantile(0.9)]
#找出单科成绩不在前10%的学生
selected_students = top_10_students[(top_10_students['math_grade'] < df['math_grade'].quantile(0.1)) | (top_10_students['physics_grade'] < df['physics_grade'].quantile(0.1)) | (top_10_students['chemistry_grade'] < df['chemistry_grade'].quantile(0.1))]
#输出结果
print(selected_students)

这已经够无脑了,希望你喜欢这套无脑的学习方法。

编辑于 2022-12-11 05:11

无限时长~~~~技术不断在更新,你的学习不也需要一直进行吗?

但如果楼主是问:自学多长时间可以入门?或者可以找找到工作?那可以告诉你答案。

从零基础开始自学Python,依照每个人理解能力的不同,大致上需要半年到一年半左右的时间如果有其他编程语言经验的加持,大概只需要2~3个月的时间就可以上手Python

肯定也有不少人问,零基础的小白如何学Python?

Python的应用方向,实在太广了。在Python基础知识学完之后,如果应用方向不同,要学习的东西也会大不同。

我当时学习Python,是问了一些专业的人之后,才慢慢了解到Python在数据分析方面,基本涵盖了“数据获取→数据处理→数据分析→数据可视化”这个流程中每个环节,都是数据分析的利器。

所以想学好Python选好方向很重要,而大部分新手对Python的方向并不了解,可能对有些分析也是看都看不懂,我建议找了解的人有经验的人带你,如果说你交好的朋友中有这部分人是最好的,如果没有也不用担心,去找对应的Python交流群就好,我当初就是进入了好几个Python交流群,不停的问问题,各种问题都问。

学Python首先就要学基础语法,学习的方法很多,可以看视频,看书,或者直接案例文档之类的。而我的建议就是视频和书籍综合,选择一个教程做深入研究,并辅以实战项目做演练,这样会比较有逻辑,自己不会乱,切记贪多,有些朋友可能看到各种推荐的资料和视频都想下载下来,然后囫囵吞枣的看,这样不仅没有效率,到后面自己还会乱。

学习Python第一步就需要选好基础资料!

这个基础资料包括视频与书籍资料,就像上面说的,要选定一套教材去做系统学习,那么在选教材这一步就很重要,可以去一些行业大咖的账号去看一些相关文章,一般情况下都是会有新手入门资料推荐的,自己做好推荐资料记录,再根据这些资料去做一对一的搜索,看他们的评价以及行业的口碑,再根据自己的实际情况以及学习基础去进一步筛选学习资料。

如果自己看了觉得很混乱,还有一个捷径走,就是去各大学习群去问,学习群都是Python同行或学习者,有许多有经验的人,也有许多是从小白一路学过来的,这样精准去问会更有效率,如果怕麻烦建议你采取这种办法,当时的学习资料就是这么来的,我天生怕麻烦,进了交流群之后就天天问,混的熟悉之后,就有朋友直接推了一套学习资料,就直接顺着资料的思路逻辑走就行。

也将所得到的资料以及学习逻辑思维整理了一下文档,分享出来,需要的朋友可以进群自取,注意这是适合小白从0到1的学习,如果说有了一定基础需要进阶可以忽略掉。

其次一定要注重实战演练!这是非常重要的一步!

Python最终要落到实际上,切忌不能纸上谈兵,否则最后就会眼高手低,在对Python语法逻辑有了大概了解后,就需要进行实战演练,且需要进行大量的实战演练,不用项目适用于不同语法,大量的项目演练可以帮助你更多的熟悉Python多层次的语法运用。

至于实战项目如何找也很简单,网上资料大把,直接去找一些适合小白练习的项目根据对应的步骤去下载操作就行。

总结来说,小白学Python要先打好逻辑语法基础,在这个过程中要注意选好基础教材,而在学好基础语法后,根据自己的兴趣爱好以及基础选择一个合适的方向,再进行进一步的进阶学习,在这个过程中,实战项目的演练必须贯穿整个过程。

同时在此阶段,除了掌握python自带的模块外,最好再掌握一些业界广泛使用的开源框架,比如twisted、peak、django、xml等。通过熟练使用它们,达到闪电开发,大大节省项目宝贵时间。

要学习Python其实不难,难的是坚持和相信,既然已经选定Python就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。

还有就是不要单打独斗,要找一群有共同方向的人一起学习,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。

下面是当初搜集的一些实战演练项目,都有详细的操作及对应的语法解析,正在找实战项目的朋友们可以进群自取。

既然已经看准了Python开始学习,那希望坚定自己的想法,利用好时间有效率的学习Python,相信生活会回报每一个为目标努力的人。

编辑于 2022-03-10 18:13

都让开!本人文科生,自学Python,2年半,作为一个曾经完全0基础,啥都不懂纯靠自学学会python的文科生,有一些不成熟的小建议可以分享一下。

首先不要觉着编程难,只要你认识26个英文字母,有一点点小学或初中的词汇量就完全没问题!!,要在心理上对自己有信心,不就是个编程嘛,搞他!!抄我也得把他抄下来!!

作为过来人建议从最最基础的语法命令开始能让自己有一个小小的成就感就行,不要贪大,比如打印显示出一句话都能有满满的成就感,这样心理的抵触感和恐惧会慢慢的消失,伴随而来的就是好奇与探索欲望的野蛮生长~

其实现在很多在线的Python学习资源,对小白学习非常友好,直接保姆式像素级教学,生怕你学不会,为了给你成就感,举各种生活中常见的例子,每一个符号、单词都能做到非常形象的解释,当时我看到这种学习方式不禁感慨,如果我当时学习Python的时候能有这种学习网站,我的学习时间至少能缩短多一半,不至于在几个不理解的知识点上纠结好几天。

比如在学习input输入的时候,脑子就是没转过弯,到底是做什么的,直到碰到某个老师讲,输入的东西,你就想象成铁矿石,input就是把铁矿石装进火车箱,然后运输给工厂,最后工厂处理后变成了铁,变成了钢,当时我就觉着这种学习方式简直太好了,一下就能把陌生的概念和现实对应起来,一下就记住了,想忘都忘不了。

在讲TRUE 和 FALSE 等逻辑运算时,非常形象的用支付宝余额的例子做了生动的比喻,小白几乎不用想就能直接记住逻辑运算是怎么回事,感觉小学僧稍微用点心都能记得很牢固!

接下来,可以给自己设立个小目标,来学以致用,比如要用Python解决工作或学习中的一个重复复制粘贴的小问题!经过自己查找搜索发现Python可以用爬虫解决我这个问题,那就搞他!!

站在巨人的肩膀上,先去搜一搜有没有几行代码的小爬虫案例,肯定有的,就拿最简单的,爬百度首页,不管是啥,先一把梭,照着代码敲一遍,然后运行,肯定能出来东西,不管是正确结果还是报错,先跑一遍再说!!

很多同学给我反馈说总是害怕代码报错!其实大可不必,程序报错非常正常!一开始不报错的代码才不正常,遇到报错,就要明白报错的意思是什么?python的报错信息对小白还是非常友好的,告诉第几行出错了,什么类型错误,什么值错误,这些务必要看懂!

其实最开始小白学报错检查的时候总会一头雾水,最容易写出bug导致程序报错,在夜曲的报错练习中,以卡片的形式,非常贴心详细的给出了每一行报错是什么意思,该如何根据报错内容去调整代码,就像有个老师给手把手的批改作业一样,体验是非常好的,这在将来工作中是非常非常必要的技能,我即使工作这么多年,也要每天去看报错内容,根据报错内容去调试代码,现在小白能在最开始就有人引导去调试报错的代码,真的能在今后工作中节省不少时间,少掉很多头发!

关于报错,还要会捕获异常,处理异常,try except,这样能让你的程序更健壮,不至于帅不过三秒!另外需要不断调试,屡清楚每一行代码返回的是什么值,有时候在不理解的地方打印一下 返回值看看是不是符合预期,不断的调试试错寻找最优写法,总之看懂报错原因+搜索+不断调试是解决报错的好方法!

有时候就因为自己少打了一个空格,一个冒号,导致排查bug找老半天,其实还是基础知识不够牢固造成的,所以还要跟着练习程序勤加练习,做到肌肉记忆。

精读代码,滤清思路,照葫芦画瓢,先看看都用了哪些第三方包,爬虫的话觉对是requests库了,顾名思义,就是发送请求接受请求的库,如果还不明白就是把这个库想象成你的浏览器,现在他是另一种浏览器了,只是没有界面。不用鼠标点击访问网页,而是用另一种方式,请求和响应,看明白响应的HTML代码咋解析呀,网上一搜,就有了另一个库bs4,以此类推,然后试着用这个代码去请求一下自己的那个目标网址试试看看都返回啥

学习过程中,缺啥补啥!哪里不会补哪里!后面你就会了解到python 除了可以写爬虫,还可以做网站,可以做数据分析,期间就会遇到更底层的困难,emmm 做网络应该更了解一些网络协议,类似http 协议,以及握手挥手原理,数据请求原理等。

同时就还需要抓包工具的使用配置,json 等数据格式的学习,html 的学习,js 的学习,总之会发现自己遇到的困难一个接一个,需要的前置知识需要一个坑一个坑的去填,这些应该比较痛苦,但是其乐无穷。

基础要精通,勤加练习,多看书!python 本身语法学习中还会在面向对象这个概念中卡住,因为之前的语法都是面向过程,写个函数封装起来就完事了,后来遇到面向对象,思路就要转变一下了,三大特性,类的概念,继承,对象,多态,封装,以及各种魔法函数,需要大量练习和理解。

后来基本的书籍已经满足不了自己了,就去看流畅的python ,cookbook 等书籍,发现python 还有很多的特性需要掌握,实在是学无止境。

这些还是python 语法本身,后面的python 爬虫就要学习除了网络协议,抓包,以及各种requests 库,还要学习提高速度多线程,多进程,分布式的抓取,另外还会需要代理ip,伪登录,等难题。

在抓数据上已经费了老劲了,接下来就要存数据,数据库得学习一下mysql sql 语句 mongodb ,redis 都得学习下。

好不容易存好了数据,就要去分析了,numpy pandas 就又要学习各种函数去学习,于是就又找了一本利用python 进行数据分析的书。

使劲看完之后,分析数据也差不多了,就要考虑数据展示了,matplotlib seaborn echart 就要学习了js语言也要学习了,于是折腾一波,就可以做出基本的数据图表了。

然后又希望展示到网站,让同事看,于是就又要学习django flask 这样的网络框架,一顿猛学之后基本就可以展示了。

后来发现自己需要优化一下网站,性能更高,耦合度更小一些,要做成前后端分离的形式,于是又去学了restful 的开发方式和vue 框架,实现前后端分离。

后面发现自己的数据分析深度不太够,于是又恶补了一些统计学的知识,于是又进了统计学到机器学习到深度学习的深坑,于是自然语言处理,计算机视觉,这些依靠神经网络的技术也就入门了,当然这些需要一点点的死磕,从线性代数到手写神经网络,到应用框架一步步理解其原理,是最有乐趣的。

总之,编程是一个全新的世界,就像学英语,打开了英语世界,那么编程就是打开了全新的编程世界,日常那些重复的问题、报表等,都变得苍白无力!困难与乐趣同在!

加油吧!人生没有无意义的努力,现在的付出,将来一定会有回报,说不定什么时候就用到了

编辑于 2023-01-13 10:05

想要快速掌握一门语言,最好最快的方法就是直接干项目。

如果是小白的话,可以先了解下语法,剩下的就是干。二话不说就是干,遇到问题解决问题,用好奇心逼迫自己去学习新知识,效率神速。

我当时培训的时候效率最高的时候就是后面要找工作,自己咔咔做了几个项目,天天搞到凌晨一二点,且乐在其中。

这是我当时用的一些资料和整理的路线

流畅的Python 提取码:ybiu

Python参考手册第4版 提取码:m2p7

Python教程-廖雪峰 提取码:1us8

笨方法学Python:提取码:pal3

Python入门指南 2.5b 提取码:47fk

python简明教程中文:提取码:9ggz

Python基础教程_第2版_修订版 提取码:hiwh

Python高级编程 提取码:dcu3



1.1. python学习大纲


1.2. python基础大纲


2.1 python语言基础


2.2 标准数据类型1


2.3 标准类型补充


2.4 标准数据类型2


2.5 标准数据类型3


2.6 条件&循环


2.7 计算机基础


3. python进阶大纲


3.1 进阶条件&循环


3.2 函数&模块








3.3 面向对象





3.4 补充知识


3.5 文件对象


3.6 异常处理


3.7 测试&调试

一些有意思的小项目



一、批量抠图

批量获取指定目录下的图片,然后通过 paddlehub 训练好的模型进行批量抠图处理。

1)代码展示

import osimport paddlehub as hub
# 加载模型
humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')  path = './heben/'    
# 文件目录# 获取文件列表
files = [path + i for i in os.listdir(path)] 
 # 抠图
 results = humanseg.segmentation(data={'image': files}) 
  for result in results:    print(result)



2)效果展示



二、猜单词游戏

1)代码展示

import random


# 存放单词的列表(可以自己填写需要背诵的单词)
words = ["print", "int", "str", "len", "input", "format", "if","for","def"]

#初始化信息↓↓↓↓↓↓↓def init():
    # 声明三个全局变量global word
    global tips
    global ranList

    #随机获取单词列表里的一个单词
    word = list(words[random.randint(0, len(words) - 1)])

    #随机数列表,存放着与单词长度一致的随机数(不重复)
    ranList = random.sample(range(0, len(word)), len(word))

    #存放提示信息
    tips = list()
    #初始化提示信息#存放跟单词长度一致的下划线for i in range(len(word)):
        tips.append("_")
    #随机提示两个字母
    tips[ranList[0]] = word[ranList[0]]
    tips[ranList[1]] = word[ranList[1]]

#函数部分↓↓↓↓↓#展示菜单def showMenu():
    print("需要提示请输入'?'")
    print("结束游戏请输入'quit!'")


#显示提示信息def showtips():
    for i in tips:
        print(i, end=" ")
    print()


#需要提示def needTips(tipsSize):
    #至少有两个未知字母if tipsSize <= len(word)-3:
        tips[ranList[tipsSize]] = word[ranList[tipsSize]]
        tipsSize += 1return tipsSize
    else:
        print("已没有提示!")


#主要运行函数↓↓↓↓↓↓def run():
    print("------python关键字版本-------")
    init()
    tipsSize = 2
    showMenu()
    
    while True:
        print("提示:",end="")
        showtips()
        guessWord = input("猜一下这个单词:")
        # ''.join(word)>把word列表的内容转换成字符串if guessWord == ''.join(word):
            print("恭喜你,猜对了!就是%s!"%(''.join(word)))
            print("再猜一次")
            init()
            
        elif guessWord == '?':
            tipsSize = needTips(tipsSize)
        elif guessWord == 'quit!':
            breakelse:
            print("猜错了!")
            continue
run()



2)效果展示



三、选择车牌号

1)代码展示

import random
import string

def selectcar_nums():#打印随机车牌号str = random.choice(string.ascii_uppercase)
    int = string.digits + string.ascii_uppercase
    cpint = random.sample(int, 5)
    cp = '京' + str + "".join(cpint)
    car_nums.append(cp)
    print(i + 1, cp)

count = 0while count < 3:
    car_nums = []
    for i in range(20):
        selectcar_nums()
    choice = input("请输入您想选择的车牌号:").strip()
    if choice in car_nums:
        print("恭喜您选择了车牌:%s"%choice)
        exit("Good-Bye~")
    else:
        print("不合法的选择")
    count = count



2)效果展示



四、温度转换器

1)代码展示

val = input("请输入带温度表示符号的温度值(例如:37C):")
if val[-1] in ['C', 'c']:
    f = 1.8 * float(val[0:-1]) + 32print("转换后的温度为:%.2fF" % f)
elif val[-1] in ['F', 'f']:
    c = (float(val[0:-1]) - 32) / 1.8print("转换后的温度为:%.2fC" % c)
else:
    print("输入错误")



2)效果展示



五、汇率转换器

1)代码展示

# @File      :  汇率实时计算.py

import requests
from lxml import etree

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
}
url = "https://www.huilv.cc/USD_CNY/"


def Get_huilv(url, headers1):
    res = requests.get(url=url, headers=headers1, timeout=2)
    # print(res.status_code)#打印状态码html = etree.HTML(res.text)
    USD_VS_RMB_0 = html.xpath('//div[@id="main"]/div[1]/div[2]/span[1]/text()')
    for a in USD_VS_RMB_0:
        b = a
    USD_VS_RMB_1 = float(b)
    print("实时汇率为:{}".format(USD_VS_RMB_1))

    currency_str_value = 0
    while currency_str_value != "":
        USD_VS_RMB = float(str(USD_VS_RMB_1))
        # 输入带单位的货币金额currency_str_value = input('请输入带单位货币的金额: ')
        # 获取货币单位unit = currency_str_value[-3:].upper()  # 第一次判断
        if unit == 'CNY':
            exchange_rate = 1 / USD_VS_RMB
            string = "美元"
        elif unit == 'USD':
            exchange_rate = USD_VS_RMB
            string = "元"
        else:
            exchange_rate = -1
        if exchange_rate != -1:
            in_money = eval(currency_str_value[0:-3])
            # 使用lambda定义函数convert_currency2 = lambda x: x * exchange_rate
            # 调用lambda函数out_money = convert_currency2(in_money)
            print('转换后的金额是:{} {} '.format(out_money, string))
        else:
            print('无法计算')

Get_huilv(url, headers)



六、飞花令诗词

1)代码展示

import re
import requests

word=input("请输入四字成语:")
style=input("请输入诗的类型(藏头诗或藏字诗):")
base_url = "https://momodel.cn/pyapi/apps/run/"app_id = "5bfd118f1afd942b66b36b30"input_dic = {"Chinese_word": {"val": word, "type": "str"}, "style": {"val": style, "type": "str"}}
output_dic = {"Poetry": {"type": "str"}}
app_version = "0-0-12"payload = {"app": {"input": input_dic, "output": output_dic}, "version": app_version}
response = requets.post(base_url + app_id, json=payload)
chinese_word=re.split('[,。]',response.json().get('response').get('Poetry'))
print("   诗句")
for i in chinese_word:
    print(i)



2)效果展示



七、人脸关键点检测

1)代码展示

face_landmark = hub.Module(name="face_landmark_localization")
image = 'face.jpg'
result = face_landmark.keypoint_detection(images=[cv2.imread(image)],visualization=True)print(result)



2)效果展示

排行榜前30的开源项目

  1. kennethreitz。和python-guide作者。他还有一个非常励志的故事,有兴趣的可以看 谁说程序员不是潜力股?
  2. mitsuhiko。、Jinja2、werkzeug和flask-sqlalchemy作者。
  3. sigmavirus24。flake8、pycodestyle(原pep8)、requests、urllib3等项目的主要贡献者和维护者。
  4. ask。Celery及相关依赖的作者。
  5. ajdavis。mongo-python-driver(pymongo)、 tornado等项目的主要贡献者。
  6. bitprophet。fabric、 paramiko(Python的ssh库)作者。

前2个是公认的Python领域代码写的最好的、最有创意的工程师。
初学者推荐阅读项目
初学者可以先阅读一些代码量比较少的,最好是单文件的项目:

  1. GitHub - kennethreitz/pip-pop: Tools for managing requirements files.
  2. GitHub - kennethreitz/envoy: Python Subprocesses for Humans™.
  3. GitHub - kennethreitz/records: SQL for Humans™
  4. GitHub - mitsuhiko/pluginbase: A simple but flexible plugin system for Python.
  5. GitHub - mitsuhiko/pipsi: pip script installer
  6. GitHub - mitsuhiko/unp: Unpacks things.
  7. GitHub - chrisallenlane/cheat
  8. GitHub - jek/blinker: A fast Python in-process signal/event dispatching system.
  9. GitHub - mitsuhiko/platter: A useful helper for wheel deployments.
  10. GitHub - kennethreitz/tablib: Python Module for Tabular Datasets in XLS, CSV, JSON, YAML, &amp;amp;amp;c.

看代码主要是了解别人写代码的方式,语法实践这些内容。看完之后,你可以针对这些项目能解决的问题自己写个项目,写完之后和上述项目去对比一下,看看哪些方面做的不好。
进阶阅读项目
进阶的时候就要阅读一些相对复杂的项目,它们能帮助你提升Python编程技巧:

  1. faif/python-patterns。使用Python实现一些 设计模式的例子。
  2. pallets/werkzeug。flask的WSGI工具集。其中包含了实现非常好的LocalProxy、cached_property、import_string、find_modules、TypeConversionDict等。
  3. bottlepy/bottle。阅读一个Web框架对Web开发就会有更深刻的理解,flask太大,bottle就4k多行,当然如果你有毅力和兴趣直接看flask是最好了的。
  4. msiemens/tinydb。了解用Python实现数据库。
  5. coleifer/peewee。了解ORM的实现。
  6. pallets/click。click已经内置于在flask 0.11里,提供命令行功能,值得阅读。
  7. mitsuhiko/flask-sqlalchemy。了解一个flask插件是怎么实现的。

除此之外Web开发者可以阅读一些相关的项目:

  1. runscope/httpbin。使用flask,网站是 httpbin(1): HTTP Client Testing Service。
  2. jahaja/psdash。使用flask和psutils的获取Linux系统信息的面板应用。
  3. pallets/flask-website。 flask官方网站应用。
  4. pypa/warehouse。如果你使用 pyramid,这个 新版的PYPI网站,可以帮助你理解很多。

当然,2个学习flask重要的资源必须爆一爆:

  1. GitHub - realpython/discover-flask: Full Stack Web Development with Flask。
  2. The Flask Mega-Tutorial。 这个就是《 Web开发:基于Python的Web应用开发实战》的原始博客。

500lines



1、《像计算机科学家一样思考Python》




以计算机科学家一样的思维方式来理解Python语言编程,实用的学习指南,适合没有Python编程经验的程序员阅读,本书的第2版与第1版相比,做了很多更新,将编程语言从Python 2升级成Python 3
2、《Python编程快速上手》




面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。
3、《流畅的Python》




Python开发一线近20年的Luciano Ramalho执笔,Victor St inner、Alex Martelli等Python大咖担纲技术审稿人,从语言设计层面剖析编程细节,兼顾Python 3和Python 2,告诉你Python中不亲自动手实践就无法理解的语言陷阱成因和解决之道,教你写出风格地道的Python代码。
4、《Python编程:从入门到精通》





针对所有层次的Python 读者而作的Python入门书,理论与实践相结合,前面部分是基础知识,后面有实战项目帮助你更好的运用这些知识。
5、《Python自然语言处理》




提供了非常易学的自然语言处理入门介绍,该领域涵盖从文本和电子邮件预测过滤,到自动总结和翻译等多种语言处理技术。本书针对Python 3和NLTK 3进行了更新,而且书中准备了充足的示例和练习。
6、《Python游戏编程快速上手》




本书通过编写一个个小巧、有趣的游戏来教授Python编程,并且采用直接展示了游戏的源代码,通过实例来解释编程的原理的方式。全书共21章,14个游戏程序和示例贯穿其中,介绍了Python基础知识、数据类型、函数、流程控制、程序调试、流程图设计、字符串操作、列表和字典、图形和动画、碰撞检测、声音和图像等方方面面的程序设计知识。本书可以帮助读者在轻松有趣的过程中,掌握Python游戏编程的基本技能


7、《笨办法学 Python》




本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。本书是基于Python 3.6版本编写的。

发布于 2023-03-02 17:24

如何学习 Python 的问题其实在知乎上已经有很多答案了,我就在这里讲讲我的故事吧,这是我18年刚入职的时候写的。

先简单自我介绍下,文科生,英语专业,今年大学本科刚毕业。最开始接触编程是在大四前的那个暑假,由于自己性格偏内向,不太喜欢过多的人际交往,想着往技术方向发展,加上网络上充斥着程序员薪资高的言论,于是下决心学习编程。


学编程必然要从一门语言入手,当时上知乎查了一下,发现对于0基础的人,两个编程语言推荐的比较多,一个是 Java,一个是 Python,又看到有大神说 Python 易学,但 Java 工作机会更多,于是选择了 Java(跑题了?)。

学习方式是跟着视频来学,现在还记得那个Java教学的老师是马士兵,配置好环境后,学了浮点数整数等基本概念,还记得一开始代码总是要写什么 public static void,然后就没有然后了,Java就一直呆在硬盘里,一个学期过去了。

在习惯性虚度光阴中,总有几天是踌躇满志的,于是在大四的寒假,我又找回了学编程的冲动。又去知乎逛了一圈,可能由于 Python 发展势头迅猛,推荐学 Python 的越来越多,而且我想着科班生在学校就已经学 Java了(不知真假),我大四再开始学的话,劣势太大,于是我又下定决心学习 Python!

人生苦短,我用 Python!先自己洗脑一波!

说到 Python,廖雪峰的教程广受好评,于是我打开了廖雪峰的Python3教程,Python 果然比 Java 语法简单多了,一口气我就学到了 for 循环,然后卡在了continue上,接着我在网上查了很多关于 continue 的讲解,最后终于,没有 continue(继续)下去了……又荒废了几周后,我在某晚的颓废过后重振雄风,重新开始了了 Python 的学习,这次我直接下了本《简明Python教程》(A Bit of Python),跟着PDF来,为了防止自己迎难而退,我囫囵吞枣地过了一遍,看懂了的就自己敲一遍代码,没理解的就照抄一遍代码,成功地完成了第一次比较完整的入门学习。

其实现在网络资源很多,跟网课学是更有效率的选择,不然很容易跟我一样从入门到放弃,毕竟对着书自学,有问题的地方得不到解答,跟着网课学就不一样了,有社群老师会跟踪解答问题,还有社群小伙伴一起营造学习氛围

后来我迫于就业压力,战略性地调整了学习方向,开始学习 Excel 和 SQL,往数据分析方面找工作。

由于非科班出身,并且没有数据分析的经验和作品,最后就业的岗位是初级数据分析师,其实就是个“表哥”,SQL 导一导数据,然后 Excel 弄一弄透视表,求求平均数什么的,没啥技术含量。幸好工作比较清闲,刚入职也没什么事干。

得知整个数据组缺乏爬虫技能之后,我决定把爬虫学一学。Python 爬虫早就耳闻,但是一直没有学习的动机,这下好了,反正闲着也闲着,不如学学爬虫,万一学会了,不就能有一技之长在公司立足了?

第二天,我就马上开始了着手去做了,Python 基础语法虽然不太熟悉了,但是哪里不懂就直接百度,又把爬虫相关的 Python 语法熟悉了一遍,列表、字典、遍历、函数这些,当天下午就写出了第一个爬虫!整个过程都是疯狂汲取知识,出结果的那一刹那,真是喜不自禁,这种正面反馈更激励了我写代码!每天快下班的时候,同事都在百无聊赖地倒计时,而我越到下班越发奋,因为在工作中有收获了,我在家就可以心安理得地荒废光阴了,这种每天都有进展的感觉太棒了!

现在的我,想往更高层次的数据分析方向发展,目前学习了numpy,pandas 和 matplotlib 这三个经典的 Python 数据分析的库,Power Bi 也开始接触了,但统计学和算法方面迟迟没有系统地学习。

一些建议

我现在也勉勉强强算是入门了吧,本着分享的精神,想给准备学习 Python 或者正在入门 Python 的朋友们一些建议供参考:

1.脚踏实地写代码

新手阶段,大家肯定会有很多困惑,喜欢在论坛、qq、微信群上问类似的问题:“0基础能不能学 Python”,“现在学Python晚不晚?”,“什么编辑器好”,“要不要在 Linux 上学习 Python“,”Python3 还是 Python2?“……对于以上问题,我的简单答复是,能学,不晚,sublime text 3或者 pycharm,windows上入门没有问题,Python3。其实,很多时候我们问问题并不是真的疑惑,只是在拖延,不想去行动,“种一棵树最好的时间是十年前,然后是现在”,我们要花精力解决的是实际码代码中出现的问题,而不是自己空想出来的问题。而且这些问题并没有绝对的正误之分,弄懂一个另一个也就触类旁通了。我给的答案都是主流的选择,相应地网上会有更多的资料。

2.多种途径查问题

别指望一本书能解决所有问题,有时候一个问题想不通看不懂的时候,换一种方式查,比如廖雪峰教程上看的一个语法不懂,就去菜鸟教程看一看,再不懂就在网上搜搜,多看看别人是怎么理解的,不同人有不同的看法,不一定哪一个就刚好能说通你。网上资源很多,但是你会发现过时的、错误的信息也同样多,代码的东西多尝试不怕的,不要怕犯错,因为在错误中更能发现自己理解上的偏差。伸手党一般不会有人搭理的,所以学会在网络中找现成的答案是自学的重要步骤。

如果自学过程中觉得效率低,孤军奋战容易放弃,强烈推荐报名一个Python课程!我说的课程不是好几千的那种,只要1分钱就能参与,不仅有学习社群交流,还有老师辅导答疑,比自己埋头自学效率高多了

3.实战实战实战!

基础语法过一遍就好了,不必深究,在项目中会不断地涉及到基础知识,忘了再查很快就能熟悉的。在基础上花太多时间往往会导致进度过慢,成就感不足,难以坚持。直接从实战中边练边学,想往数据分析方面发展,就大胆地学习 numpy、pandas、matplotlib,想搞爬虫就赶紧看看 requests,pyquery,正则表达式,想搞 web 不妨试试 flask,Python有很多优秀的库,大神们早就给我们提供了处理问题的捷径,站在前人的肩膀上,我们入门的难度更低了,有了基本的语法知识,就赶紧去实战中巩固吧!

不要囤书!不要囤资料!一定要有目的的去学,有目标才有方向,尤其对初学者而言。

谢谢你能看到这里。

另外附上一篇 Python 环境搭建,行动起来!

编辑于 2021-06-11 17:14

我今年3月前还是编程小白,虽然之前了解过一点python但是很久不用也忘完了.由于今年疫情让我有了转行的想法,后续就学起了python、sql并在今年5月底成功转行成为一名数据分析师。也就是说,我用了接近三个月学习了数据分析需要的excel,sql,python技能。

如果只能用一个字总结我的学python经验的话,那就是:

所有工具类的学习方式都是勤练,多做项目,上手写代码、用工具,你才能快速掌握在书本上(视频课上)学到的知识,并能将其转化为自己的知识储备。

其次还有几点学python过程中踩坑的经验:

  1. 制定好学习计划,坚持学习下去
  2. 找几个口碑好的教程,按需学完
  3. 每个知识点必须要反复练习
  4. 多总结自己踩过的坑,自己造点轮子用
  5. 善用百度or谷歌
  6. 给自己找几个有趣的项目,在巩固知识点的时候还能培养自己的兴趣

1.制定好学习计划,坚持学习下去

首先要确定好学习方向,要明确自己以后用python做什么。python能做的太多了,爬虫,数据分析,后端开发,运维,测试,其中的每一方面所囊括的知识都很广。所以在python基础学完后一定要确定好方向,避免啥都会点,啥都不精的情况。

我一开始学python的时候是想转后端开发,后来了解到python在后端市场竞争力不是太强,就转向了数据分析,这中间也浪费了很多精力。所以提前确定好方向很重要。

我在自学python的时候制定了学习计划并坚持了下去。我最终确定的目标是数据分析,当时每天要求自己学2小时的python教程。晚上加班很晚的话就只能第二天早上6点起来学,学到八点再去上班。

除了学习时间安排好之外,我还制定了自己的学习方向。

前期:python基础

中期:python数据科学常用的库(numpy、pandas、matplotlib)

后期:常见机器学习库(sklearn)

2.找几个口碑好的教程,按需学完

好的课程很重要,学习python这种工具类知识时,我推荐大家看视频课学习,可以激发你持续学习的动力,并且有比较好的交互效果。我是看黑马的免费视频课去学习python基础的,这个老师非常棒,讲的通俗易懂,而且讲得非常细,很适合0经验的小白。

在这里要提醒大家的一点是,不要当收藏侠,你收藏再多的课程,只要没看就等于没收藏。有些同学2000G的云盘都被自己收藏的资料塞满了,但还是经常给我抱怨没有好的课程去学习。所以,认准一门好课,看完它,你一定会有收获。

Python基础:

网上有很多Python基础相关的免费课程,比如廖雪峰大大的Python教程,B站也有很多培训班分享的免费教程,这些教程的优点是免费,缺点是内容有些老旧,新手不友好,内容枯燥。

学习python相关的教程我看了不下20种了,比较推荐的还是夜曲编程这种适用于小白,不用自己安装环境,趣味性和互动较好的新手向教程。

夜曲编程的教程沿用了百词斩的教学方式,在模块化学习的过程中利用各种卡片和互动来巩固知识点,并且非常了解小白的痛点,教学方式特别适合纯小白。

课程目录
百题斩刷题中
收集的各种代码块

并且夜曲将每一个模块化的知识点都总结成了思维导图,当忘掉某个知识点的时候就可以通过这个思维导图快速的回忆起来。

另一个好处就是夜曲编程可以在web端、公z号同步学习,完美的利用了碎片时间,每天上下班的路上就可以刷几个题,非常方便。

公z号
web端

B站搜索 “python从入门到精通”,选择第一个即可

前100P为linux课程,不感兴趣可以跳过,直接从101P开始学Pyhton基础

基础学完之后就开始数据科学常用的几个库

Python就业:B站搜索 “黑马python就业”,选择播放量最高的哪一个,看完可以学会后端开发知识

数据科学(中级):B站搜索 “Python数据分析”,在前三个中选择比较新的一个即可


机器学习(基础):学堂在线 搜索”数据挖掘:理论预算法

机器学习(进阶):B站搜索 ”菜菜的机器学习sklearn


3.知识点反复练习

虽然视频课里有相应的练习,但是这点练习程度远远不够,所以我会自己给自己找一些类似的练习题来训练自己

比如大家可以在github上搜索python练习题,或者去牛客网力扣网上找相关的练习题去做

比如我自己在学习新库的时候,也会自己先做练习:

练习openpyxl

4.多总结自己踩过的坑,自己造点轮子用

平常我也会把常用的代码总结发到知乎上,大家可以在我的专栏中找到

5.善用百度or谷歌

你的95%的问题,百度和谷歌都能给你解决掉。前提是要学会如何正确搜索自己的问题。

在学习python的过程中,遇到代码报错是很正常的现象,前期一定要养成自己纠错和总结的习惯,把自己常犯的错和百度出的解决方案总结下来,后续在遇到类似的问题时也能举一反三。

6.给自己找几个有趣的项目,在巩固知识点的时候还能培养自己的兴趣

兴趣很重要,是你能否坚持学下去的主要动力,所以一定要给自己找几个有趣的项目,让自己在做项目的时候可以把各个知识点串起来,项目做完后不仅你巩固了知识,还有了成就感。

比如我当时学爬虫的时候,正好在追一拳超人的漫画,但是漫画网站只能一页一页的看,点起来很费劲,我就自己写了个小爬虫把所有的漫画爬到本地看,写成后不仅自己看漫画方便了,还有成就感。

还有一次我在看书《刻意练习》,突然想看下网上大家对这本书的评价,然后就写了个小爬虫,把豆瓣读书上这本书的书评都爬了下来,做了个简单的分析。

学习就是不断地获取新知识,练习,实践,循环往复,你才能越来越强~

最后,努力学习,学以致用。生活中可以用到Python的位置远比你想象的多得多,等到你学会Python之后你会发现生活中有很多的问题都是可以通过Python来帮助你快速解决的。

最近看到【夜曲编程】公z号上开放了免费教程,如果你是小白的话那可以去试着学一下,真的很容易上手

我是 @Tao 一个从传统制造业转行来的数据分析师,希望通过自己的分享帮助其他想要转行数据分析的同学,更多转行相关的经验可以去看我的专栏

如果有收获,记得点赞关注~

编辑于 2021-10-28 11:39

不以项目为导向的Python自学都是耍流氓。

Python说起来内容也是茫茫多,且杂,有的放矢地学比较好吧。

以项目为导向,哪里不会查哪里。

先过一遍基础基础,再写项目。

基础可以跟着这门课程学:

要不然,纯粹去学习语言本身,就是空练屠龙技,却不知道龙在何处。

再不济,以刷题为导向去学也不错。

把LeetCode简单的题刷个200道,入门就有了。

接下来就是去写点小工具,小项目了。


Learn Python the hard way和CS61A确实很不错。(其他回答评论区的小伙伴说的,at不出来名字。。)

Learn Python the hard way以练习的方式为主,也有配套的书和视频。当年自学的时候免费跟着入门的,可惜现在免费貌似也没了。

几十个练习跟下来,差不多了。

理论的话,确实cs61A很给力。

反正CS61三件套,计算机基础妥妥可以打好。

编辑于 2020-10-20 16:23

我本人就是零基础自学的Python,对于这个问题还是比较有发言权的,另外我自己也总结了一份超全的Python自学路径,我称之为最佳实践

内容是从入门到进阶,既有教程,也有经典书籍推荐,还有众多类库介绍,不要错过哦

Python 的发展方向还是比较多的,比如 Web 开发,爬虫,数据分析,机器学习等。

主要分为以下几个部分:

  • 文档教程
  • 书籍推荐
  • 类库介绍
  • 开源项目
  • 神级网站

文档教程

Python 官方文档

docs.python.org/zh-cn/3

毫无疑问,学习任何知识,其官方文档都是最好的第一手资料的来源地,也是最为权威的,当然需要一定的功夫才能更好的消化官网上的内容

廖雪峰的官网

liaoxuefeng.com/wiki/10

廖雪峰老师被称为中国的 Python 之父,当然有戏虐的成分,但是我们不可否认其在 Python 领域的贡献,而上面的 Python 教程也是国内为数不多的良心佳作,值得反复学习

菜鸟教程 - Python 基础教程

runoob.com/python/pytho

菜鸟教程其实同样的大名鼎鼎,相信有太多的小伙伴的自学之路都是从这个网站开始的,不仅仅是 Python,任何主流的编程相关的技术都可以在这里找到!

Python 在线手册

docs.pythontab.com/

这同样是一个超级良心的网站,维护了众多 Python 相关知识的中文版本,这为英文不好的朋友带来的重大福音,散花啊~

Python-Guide

docs.python-guide.org/

这里再介绍一个英文网站,这是一个开源在 GitHub 上的 Python 教程,由众多大牛共同维护着,也是学习 Python 路上的良好助力,这是 GitHub 地址: github.com/realpython/p

realpython

realpython.com/

这是一个纯粹的 Python 教程网站,有众多的 Python 基础知识和进阶知识,绝对是学习 Python 的好地方。

好了,在线文档就介绍这么多,其他我们初学者只需要先专注于一个教程就好,相信我们只要吃透上面的任何一个教程,都会在成功的路上踏出坚实的一步!!!

经典书籍

在线网站教程虽好,但是有的人还是喜欢纸质的书籍,尤其是一些经典书籍,是无论如何也无法被替代的,下面我们就来介绍一些经典书籍

入门书籍

根据豆瓣评分的高低,这里介绍了一些经典入门书籍,大家根据自身情况选择尝试

《Python编程:从入门到实践(第二版)》

非常经典且非常基础的 Python 入门书籍,本书深入浅出,从 Python 的基础语法到 Python 2D 游戏编程,Web 开发等都一一讲解到位,帮读者解决常见编程问题和困惑。

《Python编程快速上手》

本书是一本面向实践的 Python 编程实用指南。本书的目的,不仅是介绍 Python 语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本 Python 编程概念,第二部分介绍了一些不同的任务,通过编写 Python 程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识,同时附录部分还提供了所有习题的解答。

《笨办法学 Python 3》

本书是一本 Python 入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。

《Python基础教程(第3版)》

本书包括 Python 程序设计的方方面面:首先从 Python 的安装开始,随后介绍了 Python 的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器;此后探讨了如何将 Python 与数据库、网络、C语言等工具结合使用,从而发挥出 Python 的强大功能,同时介绍了 Python 程序测试、打包、发布等知识;最后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了10个具有实际意义的 Python 项目的开发过程。

《Python学习手册(第4版)》


Google 和 YouTube 由于 Python 的高可适应性、易于维护以及适合于快速开发而采用它。如果你想要编写高质量、高效的并且易于与其他语言和工具集成的代码,《Python学习手册:第4 版》将帮助你使用 Python 快速实现这一点,不管你是编程新手还是 Python 初学者。本书是易于掌握和自学的教程,根据作者 Python 专家 Mark Lutz 的著名培训课程编写而成。

进阶书籍

这里介绍进阶书籍,也就是有了一定的编程或者 Python 基础,但在实际工作中仍然有许多小问题不知道怎么解决的朋友,可以看看这里.

《流畅的Python》


本书由奋战在 Python 开发一线近20年的 Luciano Ramalho 执笔,Victor Stinner、Alex Martelli 等 Python 大咖担纲技术审稿人,从语言设计层面剖析编程细节,兼顾 Python 3 和 Python 2,告诉你 Python 中不亲自动手实践就无法理解的语言陷阱成因和解决之道,教你写出风格地道的 Python 代码。

《Python Cookbook 中文版(第 3 版)》


《Python Cookbook(第3版)中文版》介绍了 Python 应用在各个领域中的一些使用技巧和方法,其主题涵盖了数据结构和算法,字符串和文本,数字、日期和时间,迭代器和生成器,文件和I/O,数据编码与处理,函数,类与对象,元编程,模块和包,网络和Web编程,并发,实用脚本和系统管理,测试、调试以及异常,C语言扩展等。

《Effective Python:编写高质量 Python 代码的59个有效方法》

本书可以帮你掌握真正的 Pythonic 编程方式,令你能够完全发挥出 Python 语言的强大功能,并写出健壮而高效的代码。Scott Meyers 在畅销书《Effective C++》中开创了一种以使用场景为主导的精练教学方式,本书作者 Brett Slatkin 就以这种方式汇聚了59条优秀的实践原则、开发技巧和便捷方案,并以实用的代码范例来解释它们。

《像计算机科学家一样思考 Python》

本书以培养读者以计算机科学家一样的思维方式来理解 Python 语言编程。贯穿全书的主题是如何思考、设计、开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介。

《Python核心编程(第3版)》


全书总共分为3部分,第1部分为讲解了 Python 的一些通用应用,包括正则表达式、网络编程、Internet 客户端编程、多线程编程、GUI编程、数据库编程、Microsoft Office 编程、扩展 Python 等内容。第2部分讲解了与 Web 开发相关的主题,包括 Web 客户端和服务器、CGI 和 WSGI 相关的 Web 编程、Django Web 框架、云计算、高级 Web 服务。第3部分则为一个补充/实验章节,包括文本处理以及一些其他内容。

最后,再介绍一个有趣的网站,该网站提供了大量 Python 书籍,并按照流行程度来排名,还可以根据不同功能来分组,排名每个月更新一次,经常来逛逛,对于提升 Python 水平还是很有必要的

pythonbooks.org/

类库大全

Python 向来是以第三方库多而全著称的,大多数情况下,当我们想实现一个功能的时候,都可以到网上先搜索一番,也许大神们已经完成了基本开发,我们只需要调用相关的包即可

这里总结了近千个 Python 类库,从中也可以看出 Python 生态的完备性

下面我们简单介绍几个比较重要且常用的库

Web 开发三剑客

Web 开发是 Python 的一项主要应用方向,下面介绍三个鼎鼎大名的 Web 开发框架

Django

Python 中最流行的 Web 框架,功能非常全面,基本 Web 开发所需要的功能,都已经内置好了,比如安全认证,URL Routing,模板引擎,ORM,还有 Admin 管理后台等等,全部包括。如果是有一定的 Python 基础,那么学习使用 Django 将是一个非常不错的选择。

Flask

Flask 同样是非常流行的一个 Web 框架,它的特定是轻便,灵活,可定制性强。与 Django 恰恰相反,Flask 原生几乎只包含 Web 开发所需的基本功能,但是用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时,实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。

Tornado

Tornado 是一个异步网络 Web 框架库,通过利用非阻塞网络 I/O, 可以承载成千上万的活动连接。在需要长连接的场景下使用,效果会更好。正是因为其是为了高并发而设计的,所以在有这方面需求的应用当中,Tornado 的表现要优于 Django 和 Flask。

爬虫三剑客

使用 Python 爬虫,是当前业界最为常用的方式,一起来看看三个爬虫必备的库吧

requests

requests 库是 Kenneth Reitz 大神的成名之作,据统计,该库是 Python 领域下载使用最多的库,太强了!如果想读 Python 源码的话,那一定要看,感受一下什么是真正的 Pythonic 代码。

Scrapy

Scrapy 是适用于 Python 的一个快速、高层次的屏幕抓取和 Web 抓取框架,用于抓取 Web 站点并从页面中提取结构化的数据。Scrapy 用途广泛,可以用于数据挖掘、监测和自动化测试等。

PySpider

pyspider 是一个支持任务监控、项目管理、多种数据库,具有 WebUI 的爬虫框架,有太多的爬虫系统是基于该框架开发的,学习爬虫的朋友一定要好好研究下这个框架。

数据分析三剑客

数据分析也是 Python 的一个重要应用领域,无他,唯相关类库强大而已

Pandas

鼎鼎大名的 Pandas 相信大家一定听说过,是基于 NumPy 的一种工具,该工具是为解决数据分析任务而创建的。

Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas 提供了大量能使我们快速便捷地处理数据的函数和方法,它是使 Python 成为强大而高效的数据分析环境的重要因素之一。

Numpy

NumPy(Numerical Python)是 Python 的一种开源的数值计算扩展。该工具可用来存储和处理大型矩阵,比 Python 自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

Matplotlib

Matplotlib 是一个 Python 的 2D 绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。目前大多数其他 Python 可视化库都或多或少的有 Matplotlib 的影子,足见其强大之处和不可撼动的江湖地位!

人工智能三剑客

最近这些年,人工智能实在是太火了,而 Python 同样在该领域有着非常突出的表现。

scikit-learn

Scikit-learn 是针对 Python 编程语言的免费软件机器学习库。它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k 均值和 DBSCAN,并且旨在与 Python 数值科学库 NumPy 和 SciPy 联合使用。

Pytorch

PyTorch 是一个开源的 Python 机器学习库,基于 Torch,用于自然语言处理等应用程序。

2017年1月,由 Facebook 人工智能研究院(FAIR)基于 Torch 推出了 PyTorch。它是一个基于 Python 的可续计算包,提供两个高级功能:1、具有强大的GPU加速的张量计算(如NumPy)。2、包含自动求导系统的深度神经网络。

TensorFlow

TensorFlow 是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。

游戏开发三剑客

Python 虽然不擅长做游戏开发,但是仍然有众多优秀的游戏开发框架可供我们选择。

Pygame

Pygame 是一个跨平台 Python 库,也是目前使用 Python 进行小型游戏开发的首选之库。

Cocos2d

Cocos2d 是开源的软件框架,它可用于构建游戏、应用程序和其他基于GUI的跨平台交互程序。Cocos2d 包含许多分支,其中最著名的是 Cocos2d-objc、Cocos2d-x、Cocos2d-html5 和 Cocos2d-XNA。

Panda3D

Panda3D 是一个 3D 游戏引擎,一个 3D 渲染和游戏开发库。

开源项目

对于开源项目部分,还是推荐有一定基础的朋友来学习,毕竟每个项目都是经典中的经典,当然学习起来也有一定难度哦

awesome-python

github.com/vinta/awesom

awesome-python 是一个 Python 资源列表,内容汇集了众多 Python 相关的知识:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。

看过之后,只能感叹学海无涯~

500lines

github.com/aosabook/500

这是一个非常神奇的开源项目,所有的章节均由各种大牛完成,且都试图使用少于500行代码完成,只能说太强了!

Games

github.com/CharlesPikac

一个使用 Python 完成的各种小游戏,包括坦克大战,经典塔防游戏,俄罗斯方块,扫雷等等,也许你不看不知道,看了之后才知道原来 Python 也可以开发这么精美的小游戏。

data_analysis

github.com/zhouwei713/d

这是一个比较小众的项目,里面包含了各式各样的爬虫和数据分析项目,对于新入门的朋友来说还是非常友好的。

神级网站

对于学习 Python 的神级网站,以前也有过介绍,这里再安利一次!

pythontutor

这个网站对于新手同学理解代码的运行逻辑简直是太好用了

首先进入网站我们看到的就是如下这个页面

左边是一段 Python 代码,右边则是对应的运行逻辑,变量值等信息,我们点击下方的PrevNext按钮,就会产生联动的效果

是不是很清晰呢,代码运行到哪里,变量是多少都展示的一清二楚,这对于初学者来说,可以省去很多弯路,也能够加深对代码运行的印象

该网站有两种运行模式:在线编辑模式和动态演示模式,总体来说还是对于新手的福利网站,大家可以自行体验更多功能!

pythontutor.com/

动画算法

这是一个非常有意思的网站,以动画的形式向我们展示了多种算法的实现过程

我们就来看看最常用的排序算法吧

我们看到有冒泡排序、选择排序、插入排序,并归排序等等

就来看看冒泡排序的效果吧

效果还是非常赞的,支持自己设置排序数值,还可以在运行的同时通过右下角实时查看当前排序算法的状态,贴心~

当然还有更多的动画算法展示,大家自己去探索吧

visualgo.net/

Python 代码例子

该网站就是通过代码例子来让我们更快的学习各种库的使用,毕竟有的时候某些类库的官方文档不健全,网上一些博客又喜欢断章取义,此时对于新手来说,除了去各种咨询前辈之外,这个网站就是非常好的去处了!

比如我们搜索 IPy ,就可以得到如下结果,真的非常全面

我们选择 IPy,就可以看到各种使用例子了,真的好用啊

programcreek.com/python

online-python

一个在线编辑和运行代码的网站,如果你没有搭建本地 Python 运行环境,那么这个网站就是你最好的帮手

online-python.com/

学习编程是一个长期的过程,如果你确实对编程有兴趣,那么一定要坚持练习,多多查阅资料。这个学习路线资料,希望可以在你的学习路上提供些许帮助。

另外对于上面提到的经典书籍,有条件的朋友肯定还是买来纸质的学习,如果需要电子版,可以访问下面的链接获取哈

shimo.im/docs/Ee32MpD0o

以上,希望能帮到正在自学Python路上的你!

发布于 2022-11-11 00:04

当编程小白问怎么自学的时候,他其实是缺一套课程入门。

当编程熟手问怎么自学的时候,他其实是缺几个项目练手。

当编程大佬问怎么自学的时候,他其实是缺一点深度知识。

当所有人还在问怎么自学Python,学起来大概要多久的时候,GitHub上的巨佬骆昊大哥(ID:jackfrued)已经帮你铺好了从“新手到大师”的百天进阶之路。不管是小白、熟手还是大佬都能学到东西。

而且百天不是概指,是真的只要一百天

从全方位熟悉Python语言,到Python的进阶用法,再到天南地北难易皆有的实战攻略:只要沿着这条百日成神之路走下去,就都会遇到。

从这张图,你可以看到这个项目已经在GitHub摘下87.k的星星,有口皆碑。

在开始百日成神道路之前,骆昊大哥不忘给我们介绍道路优越性(Python的优点):

  • 学习曲线低,非专业人士也能上手
  • 开源系统,拥有强大的生态圈
  • 解释型语言,完美的平台可移植性
  • 支持面向对象和函数式编程
  • 能够通过调用C/C++代码扩展功能
  • 代码规范程度高,可读性强

既然道路正确,咱们就只管跟着骆昊大哥的节奏,用一百天的时间完成从小白到熟手,从大佬到大师的进阶之路:

菜鸟行走江湖,先得懂江湖规矩

最初的15天,骆昊大哥都在给我们讲最基础的江湖规矩带领我们进行Python语言基础的修炼。

毕竟编程要想伤人不伤己(多一些别人看不懂的高端代码,少一些掉自己头发的低端Bug),基本功很重要。

先给大家讲讲前十五天的学习内容:

这一阶段的学习,只要跟着骆昊大哥按部就班的做就好。

第一天,按照教程的步骤,搭好编程环境,充实的练功生活就可以开始了。然后第二天是语言元素,第三天是分支结构,第四天是循环结构

给了秘籍还不忘让你练习,骆昊大哥把进度安排的妥妥的。

比如,打开循环结构这一小节,会看到这类结构的用途讲解,各种语句的基础用法,以及最后的小练习 (如下) 。

For-in循环:

每一节都有巩固练习和拓展练习,在这些练习结束之后,第五天,还有一个初步总结和小测试。

后面的10天,大致是这样:

第六天:函数和模块的使用
第七天:字符串和常用数据结构
第八天:面向对象编程基础
第九天:面向对象进阶
第十天:图形用户界面和游戏开发
第十一天:文件和异常
第十二天:字符串和正则表达式
第十三天:进程和线程
第十四天A:网络编程入门
第十四天B:网络应用开发
第十五天:图像和文档处理

其中,第十天是真·游戏课,会讲到“炮弹打中了飞机”“箱子摔在了地面上”这样的碰撞该怎么写,还要写个“大球吃小球”的游戏。

至少,过了这15天,就不是个一无所知的编程小白了。

初踏江湖,骆昊大哥带你打怪升级

基础打好之后,第16-20天,是Python这门语言的进阶修炼。

你会把前面15天的修炼成果巩固一波:用上不同的数据结构、算法,熟悉各种高级的操作。

这5天里,依然有许多有趣又经典的例子,比如在讲穷举法的时候,就举了百钱百鸡和五人分鱼的例子:

当然,游戏还是不能少,本章还有纸牌游戏可以写着玩。

完成前20天的任务,你就是个小有经验的Python程序猿了。但是,这里有一点需要特别强调:

算法和数据结构一定要学扎实,不然在未来十几二十年的编程中,可能都会因为这段时间某个知识点没学扎实,而导致bug满屏。

再经过20天的学习与实操,就变得更加丰盈:

第21-30天:Web前端入门
第31-35天:玩转Linux操作系统
第36-40天:数据库基础和进阶

这时,可以走出家门,去广阔的江湖里行走天地了:

第41-55天:Django实战
第55-65天:Flask实战
第66-75天:爬虫开发
第76-90天:数据处理和机器学习
第90-100天:团队项目开发

你可能已经发现了,“数据处理和机器学习”是最持久的一章,历时15天。因为这是很多人的瓶颈所在。

从各类Python库的用法,到决策树、贝叶斯分类、支持向量机这些常用方法,再到机器学习实战,这个章节都覆盖了。

在这一部分的学习过程中,要试着去思考一些深层次的东西,比如:

  • 贝叶斯分类在数据分析中能否运用?一般又如何运用?
  • 机器学习的基本逻辑是什么?
  • 网络爬虫的代码编写要如何做到即迅速又准确,而不是一通乱扒?

这些问题都不算很难,如果你能从头到尾跟着骆昊大哥走完这一百天的修行路,结束后肯定也能回答这些问题,在编程的世界中,成为一名破绽少(bug少),招式多(会用得库多)、还玉树临风(代码漂亮)、独当一面(独立开发)的大侠。

下面是骆昊大哥的项目地址:

除此之外,下面这篇文章还更具体的讲了一下学习方法以及注意事项,应该能够为你的学习扫清一些障碍:

程序员如何利用周末提高自己? - 程序员客栈的回答 - 知乎

最后,如果你学完了这100日的课程后,想要通过具体的项目来进一步提高自己的编程能力,下面的这篇文章应该能帮到你:

程序员一般可以从什么平台接私活? - 程序员客栈的回答 - 知乎

发布于 2020-06-16 20:30

你需要100天,不以项目为学习目标的都是耍流氓。我曾经长期挣扎在python学习的路上,一直不得其解。我乎推荐得很多课我都看过。能坚持下来给大神跪了,我自学一年竟然还在新手区。我一度想放弃,我是不是不应该学习编程,我是不是太差了。

直到我开启github之旅,如有神助。就像一个个大神在带你飞,一两个月的学习比我之前一年多的学习还有用。100天走出新手区

Python - 100天从新手到大师 作者:骆昊

引用骆昊老师的README.md

Python应用领域和职业发展分析

简单的说,Python是一个“优雅”、“明确”、“简单”的编程语言。

  • 学习曲线低,非专业人士也能上手
  • 开源系统,拥有强大的生态圈
  • 解释型语言,完美的平台可移植性
  • 动态类型语言,支持面向对象和函数式编程
  • 代码规范程度高,可读性强

Python在以下领域都有用武之地。

  • 后端开发 - Python / Java / Go / PHP
  • DevOps - Python / Shell / Ruby
  • 数据采集 - Python / C++ / Java
  • 量化交易 - Python / C++ / R
  • 数据科学 - Python / R / Julia / Matlab
  • 机器学习 - Python / R / C++ / Julia
  • 自动化测试 - Python / Shell

作为一名Python开发者,根据个人的喜好和职业规划,可以选择的就业领域也非常多。

  • Python后端开发工程师(服务器、云平台、数据接口)
  • Python运维工程师(自动化运维、SRE、DevOps)
  • Python数据分析师(数据分析、商业智能、数字化运营)
  • Python数据挖掘工程师(机器学习、深度学习、算法专家)
  • Python爬虫工程师
  • Python测试工程师(自动化测试、测试开发)
说明:目前,数据分析是一个非常热门的方向,因为不管是互联网行业还是传统行业都已经积累了大量的数据,现在需要的就是从这些数据中提取有价值的信息,以便打造更好的产品或者为将来的决策提供支持。

给初学者的几个建议:

  • Make English as your working language. (让英语成为你的工作语言)
  • Practice makes perfect. (熟能生巧)
  • All experience comes from mistakes. (所有的经验都源于你犯过的错误)
  • Don't be one of the leeches. (不要当伸手党)
  • Either outstanding or out. (要么出众,要么出局)

Day01~15 - Python语言基础

Day01 - 初识Python

  • Python简介 - Python的历史 / Python的优缺点 / Python的应用领域
  • 搭建编程环境 - Windows环境 / Linux环境 / MacOS环境
  • 从终端运行Python程序 - Hello, world / print函数 / 运行程序
  • 使用IDLE - 交互式环境(REPL) / 编写多行代码 / 运行程序 / 退出IDLE
  • 注释 - 注释的作用 / 单行注释 / 多行注释

Day02 - 语言元素

  • 程序和进制 - 指令和程序 / 冯诺依曼机 / 二进制和十进制 / 八进制和十六进制
  • 变量和类型 - 变量的命名 / 变量的使用 / input函数 / 检查变量类型 / 类型转换
  • 数字和字符串 - 整数 / 浮点数 / 复数 / 字符串 / 字符串基本操作 / 字符编码
  • 运算符 - 数学运算符 / 赋值运算符 / 比较运算符 / 逻辑运算符 / 身份运算符 / 运算符的优先级
  • 应用案例 - 华氏温度转换成摄氏温度 / 输入圆的半径计算周长和面积 / 输入年份判断是否是闰年

Day03 - 分支结构

  • 分支结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图
  • if语句 - 简单的if / if-else结构 / if-elif-else结构 / 嵌套的if
  • 应用案例 - 用户身份验证 / 英制单位与公制单位互换 / 掷骰子决定做什么 / 百分制成绩转等级制 / 分段函数求值 / 输入三条边的长度如果能构成三角形就计算周长和面积

Day04 - 循环结构

  • 循环结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图
  • while循环 - 基本结构 / break语句 / continue语句
  • for循环 - 基本结构 / range类型 / 循环中的分支结构 / 嵌套的循环 / 提前结束程序
  • 应用案例 - 1~100求和 / 判断素数 / 猜数字游戏 / 打印九九表 / 打印三角形图案 / 猴子吃桃 / 百钱百鸡

Day05 - 构造程序逻辑

  • 经典案例:水仙花数 / 百钱百鸡 / Craps赌博游戏
  • 练习题目:斐波那契数列 / 完美数 / 素数

Day06 - 函数和模块的使用

  • 函数的作用 - 代码的坏味道 / 用函数封装功能模块
  • 定义函数 - def语句 / 函数名 / 参数列表 / return语句 / 调用自定义函数
  • 调用函数 - Python内置函数 / 导入模块和函数
  • 函数的参数 - 默认参数 / 可变参数 / 关键字参数 / 命名关键字参数
  • 函数的返回值 - 没有返回值 / 返回单个值 / 返回多个值
  • 作用域问题 - 局部作用域 / 嵌套作用域 / 全局作用域 / 内置作用域 / 和作用域相关的关键字
  • 用模块管理函数 - 模块的概念 / 用自定义模块管理函数 / 命名冲突的时候会怎样(同一个模块和不同的模块)

Day07 - 字符串和常用数据结构

  • 字符串的使用 - 计算长度 / 下标运算 / 切片 / 常用方法
  • 列表基本用法 - 定义列表 / 用下表访问元素 / 下标越界 / 添加元素 / 删除元素 / 修改元素 / 切片 / 循环遍历
  • 列表常用操作 - 连接 / 复制(复制元素和复制数组) / 长度 / 排序 / 倒转 / 查找
  • 生成列表 - 使用range创建数字列表 / 生成表达式 / 生成器
  • 元组的使用 - 定义元组 / 使用元组中的值 / 修改元组变量 / 元组和列表转换
  • 集合基本用法 - 集合和列表的区别 / 创建集合 / 添加元素 / 删除元素 / 清空
  • 集合常用操作 - 交集 / 并集 / 差集 / 对称差 / 子集 / 超集
  • 字典的基本用法 - 字典的特点 / 创建字典 / 添加元素 / 删除元素 / 取值 / 清空
  • 字典常用操作 - keys()方法 / values()方法 / items()方法 / setdefault()方法
  • 基础练习 - 跑马灯效果 / 列表找最大元素 / 统计考试成绩的平均分 / Fibonacci数列 / 杨辉三角
  • 综合案例 - 双色球选号 / 井字棋

Day08 - 面向对象编程基础

  • 类和对象 - 什么是类 / 什么是对象 / 面向对象其他相关概念
  • 定义类 - 基本结构 / 属性和方法 / 构造器 / 析构器 / __str__方法
  • 使用对象 - 创建对象 / 给对象发消息
  • 面向对象的四大支柱 - 抽象 / 封装 / 继承 / 多态
  • 基础练习 - 定义学生类 / 定义时钟类 / 定义图形类 / 定义汽车类

Day09 - 面向对象进阶

  • 属性 - 类属性 / 实例属性 / 属性访问器 / 属性修改器 / 属性删除器 / 使用__slots__
  • 类中的方法 - 实例方法 / 类方法 / 静态方法
  • 运算符重载 - __add__ / __sub__ / __or__ /__getitem__ / __setitem__ / __len__ / __repr__ / __gt__ / __lt__ / __le__ / __ge__ / __eq__ / __ne__ / __contains__
  • 类(的对象)之间的关系 - 关联 / 继承 / 依赖
  • 继承和多态 - 什么是继承 / 继承的语法 / 调用父类方法 / 方法重写 / 类型判定 / 多重继承 / 菱形继承(钻石继承)和C3算法
  • 综合案例 - 工资结算系统 / 图书自动折扣系统 / 自定义分数类

Day10 - 图形用户界面和游戏开发

  • 使用tkinter开发GUI程序
  • 使用pygame三方库开发游戏应用
  • “大球吃小球”游戏

Day11 - 文件和异常

  • 读文件 - 读取整个文件 / 逐行读取 / 文件路径
  • 写文件 - 覆盖写入 / 追加写入 / 文本文件 / 二进制文件
  • 异常处理 - 异常机制的重要性 / try-except代码块 / else代码块 / finally代码块 / 内置异常类型 / 异常栈 / raise语句
  • 数据持久化 - CSV文件概述 / csv模块的应用 / JSON数据格式 / json模块的应用

Day12 - 字符串和正则表达式

  • 字符串高级操作 - 转义字符 / 原始字符串 / 多行字符串 / in和 not in运算符 / is开头的方法 / join和split方法 / strip相关方法 / pyperclip模块 / 不变字符串和可变字符串 / StringIO的使用
  • 正则表达式入门 - 正则表达式的作用 / 元字符 / 转义 / 量词 / 分组 / 零宽断言 /贪婪匹配与惰性匹配懒惰 / 使用re模块实现正则表达式操作(匹配、搜索、替换、捕获)
  • 使用正则表达式 - re模块 / compile函数 / group和groups方法 / match方法 / search方法 / findall和finditer方法 / sub和subn方法 / split方法
  • 应用案例 - 使用正则表达式验证输入的字符串

Day13 - 进程和线程

  • 进程和线程的概念 - 什么是进程 / 什么是线程 / 多线程的应用场景
  • 使用进程 - fork函数 / multiprocessing模块 / 进程池 / 进程间通信
  • 使用线程 - thread模块 / threading模块 / Thread类 / Lock类 / Condition类 / 线程池

Day14 - 网络编程入门和网络应用开发

  • 计算机网络基础 - 计算机网络发展史 / “TCP-IP”模型 / IP地址 / 端口 / 协议 / 其他相关概念
  • 网络应用模式 - “客户端-服务器”模式 / “浏览器-服务器”模式
  • 基于HTTP协议访问网络资源 - 网络API概述 / 访问URL / requests模块 / 解析JSON格式数据
  • Python网络编程 - 套接字的概念 / socket模块 / socket函数 / 创建TCP服务器 / 创建TCP客户端 / 创建UDP服务器 / 创建UDP客户端 / SocketServer模块
  • 电子邮件 - SMTP协议 / POP3协议 / IMAP协议 / smtplib模块 / poplib模块 / imaplib模块
  • 短信服务 - 调用短信服务网关

Day15 - 图像和文档处理

  • 用Pillow处理图片 - 图片读写 / 图片合成 / 几何变换 / 色彩转换 / 滤镜效果
  • 读写Word文档 - 文本内容的处理 / 段落 / 页眉和页脚 / 样式的处理
  • 读写Excel文件 - xlrd模块 / xlwt模块

Day16~Day20 - Python语言进阶

  • 常用数据结构
  • 函数的高级用法 - “一等公民” / 高阶函数 / Lambda函数 / 作用域和闭包 / 装饰器
  • 面向对象高级知识 - “三大支柱” / 类与类之间的关系 / 垃圾回收 / 魔术属性和方法 / 混入 / 元类 / 面向对象设计原则 / GoF设计模式
  • 迭代器和生成器 - 相关魔术方法 / 创建生成器的两种方式 /
  • 并发和异步编程 - 多线程 / 多进程 / 异步IO / async和await

Day21~30 - Web前端入门

  • 用HTML标签承载页面内容
  • 用CSS渲染页面
  • 用JavaScript处理交互式行为
  • jQuery入门和提高
  • Vue.js入门
  • Element的使用
  • Bootstrap的使用

Day31~35 - 玩转Linux操作系统

  • 操作系统发展史和Linux概述
  • Linux基础命令
  • Linux中的实用程序
  • Linux的文件系统
  • Vim编辑器的应用
  • 环境变量和Shell编程
  • 软件的安装和服务的配置
  • 网络访问和管理
  • 其他相关内容

Day36~40 - 数据库基础和进阶

  • 关系型数据库MySQL
    • 关系型数据库概述
    • MySQL的安装和使用
    • SQL的使用
      • DDL - 数据定义语言 - create / drop / alter
      • DML - 数据操作语言 - insert / delete / update / select
      • DCL - 数据控制语言 - grant / revoke
    • 相关知识
      • 范式理论 - 设计二维表的指导思想
      • 数据完整性
      • 数据一致性
    • 在Python中操作MySQL
  • NoSQL入门
    • NoSQL概述
    • Redis概述
    • Mongo概述

Day41~55 - 实战Django

Day41 - Django快速上手

  • Web应用工作机制
  • HTTP请求和响应
  • Django框架概述
  • 5分钟快速上手

Day42 - 深入模型

  • 关系型数据库配置
  • 使用ORM完成对模型的CRUD操作
  • 管理后台的使用
  • Django模型最佳实践
  • 模型定义参考

Day43 - 静态资源和Ajax请求

  • 加载静态资源
  • Ajax概述
  • 用Ajax实现投票功能

Day44 - Cookie和Session

  • 实现用户跟踪
  • cookie和session的关系
  • Django框架对session的支持
  • 视图函数中的cookie读写操作

Day45 - 报表和日志

  • 通过HttpResponse修改响应头
  • 使用StreamingHttpResponse处理大文件
  • 使用xlwt生成Excel报表
  • 使用reportlab生成PDF报表
  • 使用ECharts生成前端图表

Day46 - 日志和调试工具栏

  • 配置日志
  • 配置Django-Debug-Toolbar
  • 优化ORM代码

Day47 - 中间件的应用

  • 什么是中间件
  • Django框架内置的中间件
  • 自定义中间件及其应用场景

Day48 - 前后端分离开发入门

  • 返回JSON格式的数据
  • 用Vue.js渲染页面

Day49 - RESTful架构和DRF入门

Day50 - RESTful架构和DRF进阶

Day51 - 使用缓存

  • 网站优化第一定律
  • 在Django项目中使用Redis提供缓存服务
  • 在视图函数中读写缓存
  • 使用装饰器实现页面缓存
  • 为数据接口提供缓存服务

Day52 - 接入三方平台

  • 文件上传表单控件和图片文件预览
  • 服务器端如何处理上传的文件

Day53 - 异步任务和定时任务

  • 网站优化第二定律
  • 配置消息队列服务
  • 在项目中使用celery实现任务异步化
  • 在项目中使用celery实现定时任务

Day54 - 单元测试

Day55 - 项目上线

  • Python中的单元测试
  • Django框架对单元测试的支持
  • 使用版本控制系统
  • 配置和使用uWSGI
  • 动静分离和Nginx配置
  • 配置HTTPS
  • 配置域名解析

Day56~60 - 用FastAPI开发数据接口

  • FastAPI五分钟上手
  • 请求和响应
  • 接入关系型数据库
  • 依赖注入
  • 中间件
  • 异步化
  • 虚拟化部署(Docker)
  • 项目实战:车辆违章查询项目

Day61~65 - 爬虫开发

Day61 - 网络爬虫和相关工具

  • 网络爬虫的概念及其应用领域
  • 网络爬虫的合法性探讨
  • 开发网络爬虫的相关工具
  • 一个爬虫程序的构成

Day62 - 数据采集和解析

  • 数据采集的标准和三方库
  • 页面解析的三种方式:正则表达式解析 / XPath解析 / CSS选择器解析

Day63 - 存储数据

  • 如何存储海量数据
  • 实现数据的缓存

Day64 - 并发下载

  • 多线程和多进程
  • 异步I/O和协程
  • async和await关键字的使用
  • 三方库aiohttp的应用

Day65 - 解析动态内容

  • JavaScript逆向工程
  • 使用Selenium获取动态内容

Day66~70 - 数据分析

Day66 - 数据分析概述

Day67 - NumPy的应用

Day68 - Pandas的应用

Day69 - 数据可视化

Day70 - 数据分析项目实战

Day71~85 - 机器学习和深度学习

Day71 - 机器学习基础

Day72 - k最近邻分类

Day73 - 决策树

Day74 - 贝叶斯分类

Day75 - 支持向量机

Day76 - K-均值聚类

Day77 - 回归分析

Day78 - 深度学习入门

Day79 - Tensorflow概述

Day80 - Tensorflow实战

Day81 - Kaggle项目实战

Day82 - 天池大数据项目实战

Day83 - 推荐系统实战-1

Day84 - 推荐系统实战-2

Day85 - 推荐系统实战-3

Day86~90 - 大数据分析概述

Day86 - 大数据概述

Day87 - Hive查询

Day88 - PySpark和离线数据处理

Day89 - Flink和流式数据处理

Day90 - 大数据分析项目实战

Day91~100 - 团队项目开发

第91天: 团队项目开发的问题和解决方案

1.软件过程模型

    • 经典过程模型(瀑布模型)
      • 可行性分析(研究做还是不做),输出《可行性分析报告》。
      • 需求分析(研究做什么),输出《需求规格说明书》和产品界面原型图。
      • 概要设计和详细设计,输出概念模型图(ER图)、物理模型图、类图、时序图等。
      • 编码 / 测试。
      • 上线 / 维护。

瀑布模型最大的缺点是无法拥抱需求变化,整套流程结束后才能看到产品,团队士气低落。

    • 敏捷开发(Scrum)- 产品所有者、Scrum Master、研发人员 - Sprint
      • 产品的Backlog(用户故事、产品原型)。
      • 计划会议(评估和预算)。
      • 日常开发(站立会议、番茄工作法、结对编程、测试先行、代码重构……)。
      • 修复bug(问题描述、重现步骤、测试人员、被指派人)。
      • 发布版本。
      • 评审会议(Showcase,用户需要参与)。
      • 回顾会议(对当前迭代周期做一个总结)。
补充:敏捷软件开发宣言
个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划
角色:产品所有者(决定做什么,能对需求拍板的人)、团队负责人(解决各种问题,专注如何更好的工作,屏蔽外部对开发团队的影响)、开发团队(项目执行人员,具体指开发人员和测试人员)。
准备工作:商业案例和资金、合同、憧憬、初始产品需求、初始发布计划、入股、组建团队。
敏捷团队通常人数为8-10人。
工作量估算:将开发任务量化,包括原型、Logo设计、UI设计、前端开发等,尽量把每个工作分解到最小任务量,最小任务量标准为工作时间不能超过两天,然后估算总体项目时间。把每个任务都贴在看板上面,看板上分三部分:to do(待完成)、in progress(进行中)和done(已完成)。

2.项目团队组建

  • 团队的构成和角色
    说明:谢谢付祥英女士帮助我绘制了下面这张精美的公司组织架构图。
    • 编程规范和代码审查(flake8、pylint)
    • Python中的一些“惯例”(请参考 《Python惯例-如何编写Pythonic的代码》)
    • 影响代码可读性的原因:
      • 代码注释太少或者没有注释
      • 代码破坏了语言的最佳实践
      • 反模式编程(意大利面代码、复制-黏贴编程、自负编程、……)

3.团队开发工具介绍

    • 版本控制:Git、Mercury
    • 缺陷管理: Gitlab、 Redmine
    • 敏捷闭环工具: 禅道、 JIRA
    • 持续集成: Jenkins、 Travis-CI

请参考 《团队项目开发的问题和解决方案》。

项目选题和理解业务

1.选题范围设定

    • CMS(用户端):新闻聚合网站、问答/分享社区、影评/书评网站等。
    • MIS(用户端+管理端):KMS、KPI考核系统、HRS、CRM系统、供应链系统、仓储管理系统等。
    • App后台(管理端+数据接口):二手交易类、报刊杂志类、小众电商类、新闻资讯类、旅游类、社交类、阅读类等。
    • 其他类型:自身行业背景和工作经验、业务容易理解和把控。

2.需求理解、模块划分和任务分配

    • 需求理解:头脑风暴和竞品分析。
    • 模块划分:画思维导图(XMind),每个模块是一个枝节点,每个具体的功能是一个叶节点(用动词表述),需要确保每个叶节点无法再生出新节点,确定每个叶子节点的重要性、优先级和工作量。
    • 任务分配:由项目负责人根据上面的指标为每个团队成员分配任务。

3.制定项目进度表(每日更新)

4.OOAD和数据库设计

  • UML(统一建模语言)的类图
  • 通过模型创建表(正向工程)
python manage.py makemigrations app 
python manage.py migrate
  • 使用PowerDesigner绘制物理模型图。


  • 通过数据表创建模型(反向工程)
python manage.py inspectdb > app/models.py

第92天: Docker容器详解

  1. Docker简介
  2. 安装Docker
  3. 使用Docker创建容器(Nginx、MySQL、Redis、Gitlab、Jenkins)
  4. 构建Docker镜像(Dockerfile的编写和相关指令)
  5. 容器编排(Docker-compose)
  6. 集群管理(Kubernetes)

第93天: MySQL性能优化

第94天: 网络API接口设计

第95天:[使用Django开发商业项目](./Day91-100/95.使用Django开发商业项 目.md)

项目开发中的公共问题

  1. 数据库的配置(多数据库、主从复制、数据库路由)
  2. 缓存的配置(分区缓存、键设置、超时设置、主从复制、故障恢复(哨兵))
  3. 日志的配置
  4. 分析和调试(Django-Debug-ToolBar)
  5. 好用的Python模块(日期计算、图像处理、数据加密、三方API)

REST API设计

1.RESTful架构

    • 理解RESTful架构
    • RESTful API设计指南
    • RESTful API最佳实践

2.API接口文档的撰写

    • RAP2
    • YAPI

3. django-REST-framework的应用

项目中的重点难点剖析

  1. 使用缓存缓解数据库压力 - Redis
  2. 使用消息队列做解耦合和削峰 - Celery + RabbitMQ

第96天: 软件测试和自动化测试

单元测试

  1. 测试的种类
  2. 编写单元测试(unittest、pytest、nose2、tox、ddt、……)
  3. 测试覆盖率(coverage)

项目部署

1.部署前的准备工作

    • 关键设置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 缓存 / 数据库)
    • HTTPS / CSRF_COOKIE_SECUR / SESSION_COOKIE_SECURE
    • 日志相关配置

2.Linux常用命令回顾

3.Linux常用服务的安装和配置

4.uWSGI/Gunicorn和Nginx的使用

    • Gunicorn和uWSGI的比较
      • 对于不需要大量定制化的简单应用程序,Gunicorn是一个不错的选择,uWSGI的学习曲线比Gunicorn要陡峭得多,Gunicorn的默认参数就已经能够适应大多数应用程序。
      • uWSGI支持异构部署。
      • 由于Nginx本身支持uWSGI,在线上一般都将Nginx和uWSGI捆绑在一起部署,而且uWSGI属于功能齐全且高度定制的WSGI中间件。
      • 在性能上,Gunicorn和uWSGI其实表现相当。

5.使用虚拟化技术(Docker)部署测试环境和生产环境

性能测试

  1. AB的使用
  2. SQLslap的使用
  3. sysbench的使用

自动化测试

1.使用Shell和Python进行自动化测试

2.使用Selenium实现自动化测试

    • Selenium IDE
    • Selenium WebDriver
    • Selenium Remote Control

3.测试工具Robot Framework介绍

第97天: 电商网站技术要点剖析

第98天: 项目部署上线和性能调优

1.MySQL数据库调优

2.Web服务器性能优化

  • Nginx负载均衡配置
  • Keepalived实现高可用

3.代码性能调优

    • 多线程
    • 异步化

4.静态资源访问优化

    • 云存储
    • CDN

第99天: 面试中的公共问题

第100天: Python面试题实录

学习理解完这些不止需要100天,但会是一个可期待的时候,不再是学习编程时遥遥无期的迷茫,还是那句话,觉得写的好的希望给个三连

编辑于 2020-11-25 10:22