如何学Python
如何学习Python?
Python上手很容易, 基本有其他语言编程经验的人可以在1周内学会Python最基本的内容.
它们包括:
1.常用内置类型(int, float, bool, bytes, str, list, dict, set)的使用.
2.分支if-else 循环while 迭代for的语法.
3.def定义函数, 调用函数.
你再花1周学习些:
1.类
2.异常
此时, 有些人就在简历中得意的自称"会"Python了.
但是学到如此程度, 在实际编程中会经常遇到挫折, 主要源自理解不够深入, 仅仅Python语法和API层面体验了一下.
随意列举一些新手普遍存在的问题:
1.不了解Python对象模型, 变量名, 对象概念含混.
2.不了解可变对象和不可变对象, 尤其是int.
3.不了解切片意味着拷贝, 在循环中大量使用, 影响效率.
4.不了解切片是浅拷贝还是深拷贝.
5.遇到bytes和str(2.7中的str和unicode)就头晕.
6.经常在需要使用is的场景使用==.
7.不了解def是运行时执行语句, 并且是赋值语句.
8.类属性和实例属性混淆.
9.不了解在函数中修改可变对象参数会对调用者产生影响, 导致莫名其妙错误.
10.企图在函数中修改全局变量, 没有使用global, 而创建了本地变量.
11.以可变对象做函数默认参数.
拥有某项技能的程序员的价值, 可以用学习技能所需的成本来衡量.你用2周学习达到的这种程度, 对于企业就是没有价值的, 因为老板可以让一个公司里任意其他语言的程序员经过2-3周的学习就能达到你现在的程度.Python的简洁易用, 快速开发对项目有价值, 但这不是你的价值, 是Python的价值.所以提高自身价值, 也就是不让别人轻易追上你. 以极低的成本替代你.
你只能快跑, 进一步学习, Python语言层面还需要学习下面一些内容:
1.使用生成器, 迭代器
2.函数式编程, 匿名函数lambda, map, reduce, filter
3.列表解析, 字典解析, 集合解析, 生成器解析
4.运算符重载(setattr, getattr, getitem, gt, lt...)
5.property, 描述符(get, set, delete)
6.上下文管理器(enter, exit)
7.深入理解面向对象
上述都是语言层面的,属于内功.实战中当然也需要一些更为具体的外功, 训练外功可以从熟悉Python标准库开始, 这些模块能进入标准库说明他们足够好并且在实际项目中足够常用, 列举一些极为常用的:
1.正则表达式 re
2.迭代工具 itertools
3.常用数据结构 collections, heapq, array
4.处理二进制数据 struct
5.随机 random
6.系统调用 os
7.Python对象序列化 pickle
8.多进程多线程处理 threading, multiprocessing
9.网络 socket, urllib
10.系统参数 sys
无论练习内功或外功,结合实战都是最好的训练方式和检验手段, 可以根据个人情况以及喜好选择, 如:
1.使用django, flask开发网站.
2.开发网络爬虫或使用Python爬虫框架(如scrapy).
3.写一些自动化运维脚本, 定时读取某软件log, 出现异常自动发邮件.
4.使用selenium对网站进行测试.
5.使用Python开发树莓派小车(电机,传感器驱动).
6.使用Python开发Vim插件, 如在vim中做一个音乐播放器.
7.使用Python做算法题, 如leetcode.
8.opencv做图像识别.
9.使用numpy和pandas做数据处理.
10.使用机器学习库sklearn, tensorflow做应用.
11.使用PyQt编写桌面应用.
12.使用scipy, matplotlib做科学计算.
13.使用Python做渗透测试.
......
个人建议选择小项目进行实训, 有些新手上来就想定一个大目标, 做的时候很挫折, 往往半途而废.把小东西先实现, 然后优化. 接下来添加新功能, 慢慢迭代把小东西做大. 这样在做的时候,每实现一个小功能你都会有成就感, 激励继续前进.
可能经过比较漫长的一段时间, 你成为了一个熟练的Python应用程序员, 还有些高级话题可以继续学习:
1.装饰器
2.元类
这些高级话题在开发框架中经常使用, 它们可以帮你创建更灵活的代码.
通常自称一个月光速学了会Python的人基本都不是天才, 只是浮躁, 目标定的比较低而已.
不要太过急功近利, 慢慢玩, 精进.
如果你觉着编程有趣, 成长也就不再痛苦, 祝学习愉快.
转载:http://www.imooc.com/article/15051
如何学Python的更多相关文章
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- <-0基础学python.第一课->
初衷:我电脑里面的歌曲很久没换了,我想听一下新的歌曲,把他们下载下来听,比如某个榜单的,但是一首一首的点击下载另存为真的很恶心 所以我想有没有办法通过程序的方式来实现,结果还真的有,而且网上已经有有人 ...
- 学Python后到底能干什么?
Python是一种什么语言? Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的Jav ...
- 关于智普 - 千人免费学|Python培训|国内最权威python培训|html5
关于智普 - 千人免费学|Python培训|国内最权威python培训|html5 智普教育隶属于北京顶嵌开源科技有限公司,成立于2008年. 智普开源是基于Linux系统的互联网开源学习平台,讲求务 ...
- [置顶] 和孩子们一起学Python编程
1. 推荐书名 Computer Programming for Kids and Other Beginners in Python, 4Ed.pdf 中文译名:<和孩子们一起学Pyt ...
- 简学Python第二章__巧学数据结构文件操作
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- 简学Python第一章__进入PY的世界
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- 一步一步学Python(2) 连接多台主机执行脚本
最近在客户现场,每日都需要巡检大量主机系统的备库信息.如果一台台执行,时间浪费的就太冤枉了. 参考同事之前写的一个python脚本,配合各主机上写好的shell检查脚本,实现一次操作得到所有巡检结果. ...
- 为什么要学Python
人生苦短,我用python.在大学四年的本科学习中,Python是我接触过语法最简单,功能最为强大的语言,拥有众多第三方库的支持的语言.如果要选一门编程语言作为入门,建议使用Python.但是为了更加 ...
- C语言老司机学Python (五)
今天看的是标准库概览. 操作系统接口: 用os模块实现. 针对文件和目录管理,还有个shutil模块可以用. 例句: import os os.getcwd() # 返回当前的工作目录 os.chdi ...
随机推荐
- Nodejs----简介
1.概述: Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的.可扩展的网络应用.Node.j ...
- db2 查杀死锁进程
db2 查杀死锁进命令 db2 get snapshot for locks on (需要snapshot的访问权限) db2 list applications db2 "force ap ...
- docker swarm 英文参考资料阅读列表
将自己在使用 docker swarm 过程中阅读的英文参考资料收集在这篇博文中,便于以后查阅与温习,顺带分享. 2017年8月5日之前阅读 My experience with Docker Swa ...
- cmd打开E盘文件
在命令行中输入你想要打开文件所在的磁盘,这里我以打开E:\homework\1.jpg来给大家做示范.在命令行中输入 E: 输入后按下enter键.就进入E盘中,效果如图所示! 如果你想要查 ...
- ES6 import
ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使 ...
- Angular4 Ng 模块
原文地址 http://www.jianshu.com/p/317f0e4b7284 根模块 (root module) 每个应用都至少有一个根模块用来引导并运行应用.根模块通常命名为 AppModu ...
- 将获得datebox值的文本形式转为日期格式
在使用datebox时,已选择结束日期后,再次选择开始日期.此时判断开始日期不能大于结束日期. datebox的onSelect: function (date){}事件传入的参数是日期类型,而使用d ...
- linux screen工具
https://www.cnblogs.com/lpfuture/p/5786843.html 一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长 ...
- 转:Java中Scanner类和BufferReader类之间的区别
原文地址:https://blog.csdn.net/u014717036/article/details/52227782 java.util.Scanner类是一个简单的文本扫描类,它可以解析基本 ...
- 获取链接的参数,判断是否是微信打开,ajax获取数据
//获取链接参数function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + " ...