作者:骆昊
说明:从项目上线到获得8w+星标以来,一直收到反馈说基础部分(前15天的内容)对新手来说是比较困难的,建议有配套视频进行讲解。最近把基础部分的内容重新制作了一个名为“Python-Core-50-Courses”的项目,用更为简单通俗的方式重写了这部分内容并附带了视频讲解,初学者可以关注下这个新项目。如果需要Python基础视频,可以在“B站”搜索《Python零基础快速上手》,这套视频是我讲课的时候录制的随堂视频,画质尚可、音质一般,但是对初学者应该会有些帮助,欢迎大家留言、评论、发弹幕。学习之后觉得有收获的小伙伴可以“一键三连”来支持UP主(千锋Python)。国内用户如果访问GitHub比较慢的话,可以关注我的知乎号Python-Jack,上面的“从零开始学Python”专栏比较适合初学者,其他的专栏也在持续创作和更新中,欢迎大家关注并点赞评论。
创作不易,感谢大家的打赏支持,这些钱不会用于个人消费(例如:购买咖啡),而是通过腾讯公益、美团公益、水滴筹等平台捐赠给需要帮助的人(点击了解捐赠情况)。需要加入QQ学习群的可以扫描下面的二维码,三个群加一个即可,不要重复进群。学习群会为大家提供学习资源和问题解答,如果有Python体验课和行业公开课会提前在群里通知大家,欢迎大家加入。
项目“Day80~90”部分目前仍在创作中,因为作者平时也挤不出太多时间来写文档,因此更新的速度比较缓慢,感谢大家的理解。
简单的说,Python是一个“优雅”、“明确”、“简单”的编程语言。
Python在以下领域都有用武之地。
作为一名Python开发者,根据个人的喜好和职业规划,可以选择的就业领域也非常多。
说明:目前,数据分析和数据挖掘是非常热门的方向,因为不管是互联网行业还是传统行业都已经积累了大量的数据,各行各业都需要数据分析师从已有的数据中发现更多的商业价值,从而为企业的决策提供数据的支撑,这就是所谓的数据驱动决策。
给初学者的几个建议:
print
函数 / 运行程序input
函数 / 检查变量类型 / 类型转换if
/ if
-else
结构 / if
-elif
-else
结构 / 嵌套的if
break
语句 / continue
语句range
类型 / 循环中的分支结构 / 嵌套的循环 / 提前结束程序def
关键字 / 函数名 / 参数列表 / return
语句 / 调用自定义函数range
创建数字列表 / 生成表达式 / 生成器keys
方法 / values
方法 / items
方法 / setdefault
方法__str__
方法__slots__
__add__
/ __sub__
/ __or__
/__getitem__
/ __setitem__
/ __len__
/ __repr__
/ __gt__
/ __lt__
/ __le__
/ __ge__
/ __eq__
/ __ne__
/ __contains__
tkinter
开发GUI程序pygame
三方库开发游戏应用try
-except
代码块 / else
代码块 / finally
代码块 / 内置异常类型 / 异常栈 / raise
语句csv
模块的应用 / JSON数据格式 / json
模块的应用in
和not in
运算符 / is_xxx
方法 / join
和split
方法 / strip
相关方法 / pyperclip
模块 / 不变字符串和可变字符串 / StringIO
的使用re
模块实现正则表达式操作(匹配、搜索、替换、捕获)re
模块 / compile
函数 / group
和groups
方法 / match
方法 / search
方法 / findall
和finditer
方法 / sub
和subn
方法 / split
方法fork
函数 / multiprocessing
模块 / 进程池 / 进程间通信threading
模块 / Thread
类 / RLock
类 / Condition
类 / 线程池requests
三方库 / 解析JSON格式数据socket
模块 / socket
函数 / 创建TCP服务器 / 创建TCP客户端 / 创建UDP服务器 / 创建UDP客户端smtplib
模块 / poplib
模块 / imaplib
模块xlrd
/ xlwt
/ openpyxl
async
和awai
tcreate
/ drop
/ alter
insert
/ delete
/ update
select
grant
/ revoke
HttpResponse
修改响应头StreamingHttpResponse
处理大文件xlwt
生成Excel报表reportlab
生成PDF报表网站优化第一定律
在Django项目中使用Redis提供缓存服务
在视图函数中读写缓存
使用装饰器实现页面缓存
为数据接口提供缓存服务
requests
三方库实现数据抓取软件过程模型
经典过程模型(瀑布模型)
瀑布模型最大的缺点是无法拥抱需求变化,整套流程结束后才能看到产品,团队士气低落。
敏捷开发(Scrum)- 产品所有者、Scrum Master、研发人员 - Sprint
补充:敏捷软件开发宣言
- 个体和互动 高于 流程和工具
- 工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 响应变化 高于 遵循计划
角色:产品所有者(决定做什么,能对需求拍板的人)、团队负责人(解决各种问题,专注如何更好的工作,屏蔽外部对开发团队的影响)、开发团队(项目执行人员,具体指开发人员和测试人员)。
准备工作:商业案例和资金、合同、憧憬、初始产品需求、初始发布计划、入股、组建团队。
敏捷团队通常人数为8-10人。
工作量估算:将开发任务量化,包括原型、Logo设计、UI设计、前端开发等,尽量把每个工作分解到最小任务量,最小任务量标准为工作时间不能超过两天,然后估算总体项目时间。把每个任务都贴在看板上面,看板上分三部分:to do(待完成)、in progress(进行中)和done(已完成)。
项目团队组建
团队的构成和角色
说明:谢谢付祥英女士帮助我绘制了下面这张精美的公司组织架构图。
编程规范和代码审查(flake8
、pylint
)
Python中的一些“惯例”(请参考《Python惯例-如何编写Pythonic的代码》)
影响代码可读性的原因:
团队开发工具介绍
请参考《团队项目开发的问题和解决方案》。
选题范围设定
CMS(用户端):新闻聚合网站、问答/分享社区、影评/书评网站等。
MIS(用户端+管理端):KMS、KPI考核系统、HRS、CRM系统、供应链系统、仓储管理系统等。
App后台(管理端+数据接口):二手交易类、报刊杂志类、小众电商类、新闻资讯类、旅游类、社交类、阅读类等。
其他类型:自身行业背景和工作经验、业务容易理解和把控。
需求理解、模块划分和任务分配
制定项目进度表(每日更新)
模块 | 功能 | 人员 | 状态 | 完成 | 工时 | 计划开始 | 实际开始 | 计划结束 | 实际结束 | 备注 |
---|---|---|---|---|---|---|---|---|---|---|
评论 | 添加评论 | 王大锤 | 正在进行 | 50% | 4 | 2018/8/7 | 2018/8/7 | |||
删除评论 | 王大锤 | 等待 | 0% | 2 | 2018/8/7 | 2018/8/7 | ||||
查看评论 | 白元芳 | 正在进行 | 20% | 4 | 2018/8/7 | 2018/8/7 | 需要进行代码审查 | |||
评论投票 | 白元芳 | 等待 | 0% | 4 | 2018/8/8 | 2018/8/8 |
OOAD和数据库设计
UML(统一建模语言)的类图
通过模型创建表(正向工程),例如在Django项目中可以通过下面的命令创建二维表。
python manage.py makemigrations app
python manage.py migrate
使用PowerDesigner绘制物理模型图。
通过数据表创建模型(反向工程),例如在Django项目中可以通过下面的命令生成模型。
python manage.py inspectdb > app/models.py
unittest
、pytest
、nose2
、tox
、ddt
、……)coverage
)