https://www.zhihu.com/question/29138020html
https://docs.python.org/zh-cn/3/前端
https://www.liaoxuefeng.com/wiki/1016959663602400java
https://www.runoob.com/python3/python3-tutorial.htmlnode
http://www.pythontutor.com/visualize.html#mode=editpython
给初学者的几个建议:mysql
先附上github地址:nginx
下面是这个一百天计划里面的学习框架,我在这里放上来。git
Day01 - 初识Python
Python简介 - Python的历史 / Python的优缺点 / Python的应用领域程序员
搭建编程环境 - Windows环境 / Linux环境 / MacOS环境github
从终端运行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 - 构造程序逻辑
基础练习 - 水仙花数 / 完美数 / 五人分鱼 / Fibonacci数列 / 回文素数
综合练习 - 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 - 文件和异常
Day12 - 字符串和正则表达式
Day13 - 进程和线程
Day14 - 网络编程入门和网络应用开发
Day15 - 图像和文档处理
Day41 - 快速上手
Day42 - 深刻模型
Day43 - 静态资源和Ajax请求
Day44 - 表单的应用
Day45 - Cookie和Session
Day46 - 报表和日志
Day47 - 中间件的应用
Day48 - 先后端分离开发入门
Day49 - RESTful架构和DRF入门
Day50 - RESTful架构和DRF进阶
Day51 - 使用缓存
Day52 - 文件上传和富文本编辑
Day53 - 短信和邮件
Day54 - 异步任务和定时任务
Day55 - 单元测试和项目上线
Day56 - Flask入门
Day57 - 模板的使用
Day58 - 表单的处理
Day59 - 数据库操做
Day60 - 项目实战
Day61 - 预备知识
Day62 - Tornado入门
Day63 - 异步化
Day64 - WebSocket的应用
Day65 - 项目实战
Day66 - 网络爬虫和相关工具
Day67 - 数据采集和解析
Day68 - 存储数据
Day69 - 并发下载
Day70 - 解析动态内容
Day71 - 表单交互和验证码处理
Day72 - Scrapy入门
Day73 - Scrapy高级应用
Day74 - Scrapy分布式实现
Day75 - 爬虫项目实战
Day76 - 机器学习基础
Day77 - Pandas的应用
Day78 - NumPy和SciPy的应用
Day79 - Matplotlib和数据可视化
Day80 - k最近邻(KNN)分类
Day81 - 决策树
Day82 - 贝叶斯分类
Day83 - 支持向量机(SVM)
Day84 - K-均值聚类
Day85 - 回归分析
Day86 - 大数据分析入门
Day87 - 大数据分析进阶
Day88 - Tensorflow入门
Day89 - Tensorflow实战
Day90 - 推荐系统
第91天: 团队项目开发准备
补充:敏捷软件开发宣言
角色:产品全部者(决定作什么,能对需求拍板的人)、团队负责人(解决各类问题,专一如何更好的工做,屏蔽外部对开发团队的影响)、开发团队(项目执行人员,具体指开发人员和测试人员)。
准备工做:商业案例和资金、合同、憧憬、初始产品需求、初始发布计划、入股、组建团队。
敏捷团队一般人数为8-10人。
工做量估算:将开发任务量化,包括原型、Logo设计、UI设计、前端开发等,尽可能把每一个工做分解到最小任务量,最小任务量标准为工做时间不能超过两天,而后估算整体项目时间。把每一个任务都贴在白板上面,白板上分三部分:to do(待完成)、in progress(进行中)和done(已完成)。
请参考《团队项目开发》。
2.经过数据表建立模型(反向工程)
python manage.py inspectdb > app/models.py
第94天: 网络API接口设计
第95天: 使用Django开发项目
第97天: 电商网站技术要点剖析
第98天: 项目部署上线和性能调优
3.代码性能调优
4.静态资源访问优化
第99天: 面试中的公共问题
第100天: 英语面试
做者:骆昊 (jackfrued)
====================
笔记连接(基于Python 2.7):
笔记目录:
=================
力。
Python 的设计哲学之一就是 简单易学,体如今两个方面:废话很少说,学会一门语言的捷径只有一个: Getting Started
¶ 起步阶段
任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。
°1 硬知识
“硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具备普适性的,看上去是掌握了一种语法,实际是创建了一种思惟。例如:让一个 Java 程序员去学习 Python,他能够很快的将 Java 中的学到的面向对象的知识 map 到 Python 中来,所以可以快速掌握 Python 中面向对象的特性。
若是你是刚开始学习编程的新手,一本可靠的语法书是很是重要的。它看上去可能很是枯燥乏味,但对于创建稳固的编程思惟是必不可少。
下面列出了一些适合初学者入门的教学材料:
❖「笨方法学 Python」:http://learnpythonthehardway.org/book/
这本书在讲解 Python 的语法成分时,还附带大量可实践的例子,很是适合快速起步。
❖「廖雪峰的 Python 2.7 教程」:Home - 廖雪峰的官方网站
Python 中文教程的翘楚,专为刚刚步入程序世界的小白打造。
❖「The Hitchhiker’s Guide to Python!」:The Hitchhiker’s Guide to Python!
这本指南着重于 Python 的最佳实践,无论你是 Python 专家仍是新手,都能得到极大的帮助。
❖「Python 官方文档」:Our Documentation
实践中大部分问题,均可以在官方文档中找到答案。
❖ 辅助工具:Python Tutor
一个 Python 对象可视化的项目,用图形辅助你理解 Python 中的各类概念。
用一种方法,最好是只有一种方法来作一件事。
学习也是同样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。
必要的时候,可能须要阅读讲解数据结构和算法的书,这些知识对于理解和使用 Python 中的对象模型有着很大的帮助。
°2 软知识
“软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即便彻底不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。
对这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择 Python 版本时徘徊不决,一下子看 2.7 一下子又转到 3.0,或者徜徉在类库的大海中没法自拔,Scrapy,Numpy,Django 什么都要试试,或者参与编辑器圣战、大括号缩进探究、操做系统辩论赛等无心义活动,或者成天跪舔语法糖,老想着怎么一行代码把全部的事情作完,或者去构想圣洁的性能安全通用性健壮性所有满分的解决方案。
不少“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。
还不如告诉初学者,学习原本就是个须要你去走弯路出 Bug,只能脚踏实地,没有奇迹只有狗屎的过程。
选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。
本身走了弯路,你才知道这么作的好处,才能理解为何人们能够手写状态机去匹配却偏要发明正则表达式,为何面向过程能够解决却偏要面向对象,为何我能够操纵每一根指针却偏要自动管理内存,为何我能够嵌套回调却偏要用 Promise...
更重要的时,你会明白,高层次的解决方法都是对低层次的封装,并非任何状况下都是最有效最合适的。
技术涌进就像波浪同样,那些陈旧的封存已久的技术,消退了早晚还会涌回的。就像如今移动端应用、手游和 HTML5 的火热,某些方面不正在重演过去 PC 的那些历史么?
所以,不要担忧本身走错路误了终身,坚持并保持进步才是正道。
起步阶段的核心任务是掌握硬知识,软知识作适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。
¶ 发展阶段
完成了基础知识的学习,一定会感到一阵空虚,怀疑这些语法知识是否是真的有用。
没错,你的怀疑是很是正确的。要让 Python 发挥出它的价值,固然不能停留在语法层面。
发展阶段的核心任务,就是“跳出 Python,拥抱世界”。
在你面前会有多个分支:科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道 Python 语法就能解决的问题。
拿爬虫举例,若是你对计算机网络,HTTP协议,HTML,文本编码,JSON一无所知,你能作好这部分的工做么?而你在起步阶段的基础知识也一样重要,若是你连循环递归怎么写都还要查文档,连 BFS 都不知道怎么实现,这就像工匠作石凳每次起锤都要思考锤子怎么使用同样,很是低效。
在这个阶段,不可避免要接触大量类库,阅读大量书籍的。
°1 类库方面
「Awesome Python 项目」:vinta/awesome-python · GitHub
这里列出了你在尝试解决各类实际问题时,Python 社区已有的工具型类库,以下图所示:
你能够按照实际需求,寻找你须要的类库。
至于相关类库如何使用,必须掌握的技能即是阅读文档。因为开源社区大多数文档都是英文写成的,因此,英语很差的同窗,须要恶补下。
°2 书籍方面:
这里我只列出一些我以为比较有一些帮助的书籍,详细的请看豆瓣的书评:
科学和数据分析:
❖「集体智慧编程」:集体智慧编程 (豆瓣)
❖「数学之美」:数学之美 (豆瓣)
❖「统计学习方法」:统计学习方法 (豆瓣)
❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)
❖「数据科学实战」:数据科学实战 (豆瓣)
❖「数据检索导论」:信息检索导论 (豆瓣)
爬虫:
❖「HTTP 权威指南」:HTTP权威指南 (豆瓣)
Web 网站:
❖「HTML & CSS 设计与构建网站」:HTML & CSS设计与构建网站 (豆瓣)
...
列到这里已经不须要继续了。
聪明的你必定会发现上面的大部分书籍,并非讲 Python 的书,而更多的是专业知识。
事实上,这里所谓“跳出 Python,拥抱世界”,实际上是发现 Python 和专业知识相结合,可以解决不少实际问题。这个阶段能走到什么程度,更多的取决于本身的专业知识。
¶ 深刻阶段
这个阶段的你,对 Python 几乎了如指掌,那么你必定知道 Python 是用 C 语言实现的。
但是 Python 对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开 Python 的黑盒子,深刻到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。
这里推荐一本书:
「Python 源码剖析」:Python源码剖析 (豆瓣)
这本书把 Python 源码中最核心的部分,给出了详细的阐释,不过阅读此书须要对 C 语言内存模型和指针有着很好的理解。
另外,Python 自己是一门杂糅多种范式的动态语言,也就是说,相对于 C 的过程式、 Haskell 等的函数式、Java 基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在 Python 中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深入的理解,也能了解到 Python 语言的根源。
这里推荐一门公开课
「编程范式」:斯坦福大学公开课:编程范式
讲师高屋建瓴,从各类编程范式的表明语言出发,给出了每种编程范式最核心的思想。
值得一提的是,这门课程对C语言有很是深刻的讲解,例如C语言的范型和内存管理。这些知识,对阅读 Python 源码也有大有帮助。
Python 的许多最佳实践都隐藏在那些众所周知的框架和类库中,例如 Django、Tornado 等等。在它们的源代码中淘金,也是个不错的选择。
¶ 最后的话
每一个人学编程的道路都是不同的,其实大都异曲同工,没有迷路的人只有不能坚持的人。虽然听上去有点鸡汤,可是这是事实。
学习Python须要掌握以下基础知识以及相关技能。
1.Python基础知识(变量、语句、数据类型、数值类型、字符串、布尔类型、列表、字典、元组、条件语句、循环语句、函数、装饰器、面向对象、网络socket、爬虫)
2.Python基础库(模块、包、系统模块、三方模块)
3.python文件处理(读、写、执行、)
4.python字符统计
5.python数据排序
只记Python基础语法,却没什么鸟用。就像幼儿园,老师在黑板上写的‘肉’字,记住这个字咋写,一笔一划的记住,只须要半天,可是把这个词和你平时吃的东西绑定,以致于后面你想到这个字,就流口水,须要平常的重复训练。
同理:无方向的看书,看视频也没什么用,其实能够经过直接实战来上手,好比:
文件操做
字符排序
网络编程
错误的学习方法:
不少人在学习Python的时候经常会犯下面一种状况:
买一本厚厚的编程指南,逼本身看完,记住每一个语法,闭门看书三个月,吃透一本书,最后一行代码也写不出来。
正确的学习方法:
编程就像骑自行车,买一本<<骑自行车大全>>是没有什么用的。
正确姿式:掌握最基础的姿式,就能够骑上车出发了,实际联系几天,摔几跤,基本就学会了。
不少朋友反馈:Python基础语法都学会了,但不知如何写项目进阶?
1.List,Dict特性滚瓜烂熟,就是没法写出实际的项目。
2.各类书籍也看,写不出东西。
3.各类视频也看,写不出东西。
4.各类大会也去,名词高大上,可是没学到具体的技能。
对自我进行检测:
1.给你一个字符串“come baby,python rocks!” 如何统计里面字母o出现的次数!
思路:遍历字符串,定义一个变量,每次o出现,都+1
2.给你一个字符串“come baby,python rocks!” 如何统计这里面全部字母出现的次数!(普通变量确定没法完成。)
思路:须要使用字典这类复杂的数据结构处理,字母当key,出现的次数当value,每一个key出现,对应的value+1
3.给你一个字符串“come baby,python rocks!” 如何统计这里面字母出现次数的前三名!
思路:排序,取出前三
后续扩展练习:
1.给你一个字符串“come baby,python rocks!” 怎么统计出现次数前三的字母。
2.一个nginx日志文件,怎么统计IP出现次数前三的url。
3.一个nginx日志文件,统计IP出现前三后,如何存入MySQL数据库。
4.存入MySQL中的日志文件,如何输出给浏览器端显示。
5.如何美化前端表格等等。
模块
将多个代码块(按功能)定义到同一个文件中。别的文件中使用时则先导入模块,在调用模块内变量或函数。
模块命名要符合python变量的命名规范
1.建议全小写英文字母和数字
2.避免与经常使用模块或第三方模块名称冲突
控制模块内代码在使用python mod.py时执行,在导入时不执行
1.经过Global内变量__name__进行判断
2.当以python mod.py运行脚本时__name__变量为__main__字符串
3.当以模块导入时__name__为模块名称字符串
包
将不一样模块文件放在不一样文件夹内,包文件夹下面须要有__init__.py文件用以声明该文件为Python包。
使用时须要从包内导入模块后调用模块中变量和函数。
经常使用系统模块:
os,sys,time,datetime,urllib,xml,json,email,csv,collections,math,zipfile,trafile,hashlib
经常使用三方模块:
requests,pyquery,django,flask,mysqlclient,paramiko,redis,lxml,dateutils,ipaddr,netaddr
模块学习方法:
1.先知道有没有
2.用的时候在查
内置工具:dir、help
搜索引擎:google、百度
1.Python基础入门(入门、数据类型、条件表达、循环语句)
2.Python基础进阶(文件操做、函数、装饰器、模块、面向对象、网络编程)
3.Python前端知识(Html、Css、Js、Jquery、Bootstrap、)
4.Python高级用法(Django、Flask、数据库操做、MVC、ORM、Admin、template)
5.Python项目实战(电商项目、爬虫项目、经常使用组件、运维项目、代码调优)
6.Python高级进阶(数据算法、代码规范、面试技巧)
重要:多抄、多写、多想、多问、多看、多听、多说
1.学习编程就是为了解决实际的问题,把本身在工做或学习中的重复工做程序化
2.谷歌和度娘
3.加入开源社区(多看、多分享、多交流)
4.参加培训辅导(仔细听课、跟上课堂学习,有问题作记录,课后查阅资料或请求他人)
5.善于记录笔记,不断总结,查漏补缺。
1.python基础入门(入门、数据类型、条件表达、循环语句)
2.python基础进阶(文件操做、函数、装饰器、模块、面向对象、网络编程)
3.python数据采集:(外部数据源导入分析&爬虫本身采集数据源分析)
4.数据分析:(各类库,如Pandas库,Numpy库必备数据库)
5.数据可视化:(matplotlib库)
重要:实用便可,最具价值,切莫花哨不适用
1.计算机视觉
典型的应用包括:人脸识别、车牌识别、扫描文字识别、图片内容识别、图片搜索等等。
2.天然语言处理
典型的应用包括:搜索引擎智能匹配、文本内容理解、文本情绪判断,语音识别、输入法、机器翻译等等。
3.社会网络分析
典型的应用包括:用户画像、网络关联分析、欺诈做弊发现、热点发现等等。
4.推荐
典型的应用包括:虾米音乐的“歌曲推荐”,某宝的“猜你喜欢”等等。
2.编程语言、工具和环境:python
python有着全品类的数据科学工具,从数据获取、数据清洗到整合各类算法都作得很是全面。
3.编程语言、工具和环境:R
R最大的优点是开源社区,汇集了很是多功能强大可直接使用的包,绝大多数的机器学习算法在R中都有完善的包可直接使用,同时文档也很是齐全。常见的package包括:RGtk2, pmml, colorspace, ada, amap, arules, biclust, cba, descr, doBy, e1071, ellipse等等。另外,值得一提的是R的可视化效果作得很是不错,而这对于机器学习是很是有帮助的。
4.其余语言
相应资深程序员GG的要求,再补充一下Java和C++相关机器学习package。
管理 Python 版本和环境的工具
管理包和依赖的工具。
本地 PyPI 仓库服务和代理。
打包为可执行文件以便分发。
将源码编译成软件。
交互式 Python 解析器。
文件管理和 MIME(多用途的网际邮件扩充协议)类型检测。
============ End