⑴ 如何系统地自学 python
是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?
幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。
Python 的设计哲学之一就是简单易学,体现在两个方面:
语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。
切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
废话不多说,学会一门语言的捷径只有一个: 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 的哲学:
用一种方法,最好是只有一种方法来做一件事。
学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。
必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用 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 想学编程的同学,不要犹豫了,看完这篇文章,Just getting started~
⑵ 2016最新python入门到精通视频教程下载地址
给你推荐一个免费的Python及Django在线教程:刘江的Python教程
如果觉得不好,右边有个差评按钮,请点击!
⑶ 40岁老男人从0开始学python实录(第4天):廖雪峰,拜拜了您嘞
各位渴望看我笑话的老铁们,恭喜,你们又有乐子看了。
在昨天顺利攻克了文本编辑器难题后,我很愉快继续学习后面的两个小节《Python代码运行助手》《输入和输出》。
前者没啥可说的,感觉跟我没啥太大关系、意义不大,简单看看就过去了。
《输入和输出》一节,按照教程操作,还是蛮愉快的。
这节主要讲了print和input命令的使用方法,以及变量的概念。
前面的学习过程可谓一马平川,结果最后的练习稍微出现了点小问题。
练习:请利用print()输出1024 * 768 = xxx。
我本来觉得是个很简单的问题,没想到输入了4遍才搞定。
我估计应该是中间错加了空格的问题。
好吧,对比例子,应该还得加逗号。
嗯,这他么其实是个手误,逗号输错了位置。(残念)
这小玩意都用了四遍才搞定,40岁的老男人真的太难了。
继续进入后面的学习。
下一章《Python基础》中第一节《数据类型和变量》。
然后,我就蒙圈了。
这一节的内容知识量明显增多,前面的内容还好,按部就班的按照教程进行操作就好。
后面开始出现转义符的概念,什么 、 、之类的东东,总之确实需要动些脑子了。
这里我觉得,是不是可以简单理解为:两个“”表示显示“”,一个“”表示转义呢?
相比之下,后面讲“用r''表示''内部的字符串默认不转义”我感觉更好理解一些。
还有,“ 表示制表符”是什么意思?
我真的好傻,悲伤的泪水不争气的流了下来。
上面的问题,哪位知道的仁兄,望在评论区赐教,在此谢过了。
再往后讲变量,我就有点进行不下去了。
给a赋值为1,这个我明白,但是后面t_007=T007,这是为啥?咋蹦出来的?
或者t_007跟a是一个概念,也是在进行赋值操作?
我这么猜测不知道对不对。
他后面举的那个例子,我就彻底晕菜了。
其实说起来,可能也不能怪人家教程,周末这两天在家,确实也很难静下来学习。
但是另一方面,就像很多网友评论区、微信上跟我探讨的,廖雪峰这个教程确实还是存在一些问题的,甚至有人说他有些误导的成分在里面,这个我学的还少,就不敢妄言了。
所以,我决定,结合自己的实际情况(岁数大、脑子慢!),以后以b站600集视频为主不香吗?
毕竟,那个看的很欢乐,最关键的是,学习至今还没遇到槛。
所以,下一期的心得,我就说说在b站上,我都学了些啥吧。。。
⑷ 廖雪峰python3教程怎么样
您好,每个老师的都很不错!
我现在也正在看Python,个人认为,应该先找一个能基础入门的,快速看完并实际练习一遍,然后在结合其他人的书在看几遍,这样效果比较好。每个人写书的特点都不一样,因此分类的重点什么的都不太一样。这样多看看多练习一下,能更全面一点!
视频的话,也类同,不过建议先看书自己来,自己把代码敲一遍,然后在看视频,看看自己出错的地方,老师怎么解决的,自己是怎么解决的,那种方法更好一点!
共同进步~~~谢谢
⑸ python代码运行助手怎么打开
python代码运行助手是能在网页上运行python语言的工具。因为python的运行环境在很多教程里都是用dos的,黑乎乎的界面看的有点简陋,所以出了这python代码运行助手,作为ide。
实际上,python代码运行助手界面只能算及格分,如果要找ide,推荐使用jupyter。jupyter被集成到ANACONDA里,只要安装了anacoda就能使用了。
回到这个问题:
1、要打开这运行助手首先要下载一个learning.py,如果找不到可以复制如下代码另存为“learning.py”,编辑器用sublime、或者notepad++。
#!/usr/bin/envpython3
#-*-coding:utf-8-*-
r'''
learning.py
APython3tutorialfromhttp://www.liaoxuefeng.com
Usage:
python3learning.py
'''
importsys
defcheck_version():
v=sys.version_info
ifv.major==3andv.minor>=4:
returnTrue
print('Yourcurrentpythonis%d.%d.PleaseusePython3.4.'%(v.major,v.minor))
returnFalse
ifnotcheck_version():
exit(1)
importos,io,json,subprocess,tempfile
fromurllibimportparse
fromwsgiref.simple_serverimportmake_server
EXEC=sys.executable
PORT=39093
HOST='local.liaoxuefeng.com:%d'%PORT
TEMP=tempfile.mkdtemp(suffix='_py',prefix='learn_python_')
INDEX=0
defmain():
httpd=make_server('127.0.0.1',PORT,application)
print('ReadyforPythoncodeonport%d...'%PORT)
httpd.serve_forever()
defget_name():
globalINDEX
INDEX=INDEX+1
return'test_%d'%INDEX
defwrite_py(name,code):
fpath=os.path.join(TEMP,'%s.py'%name)
withopen(fpath,'w',encoding='utf-8')asf:
f.write(code)
print('Codewroteto:%s'%fpath)
returnfpath
defdecode(s):
try:
returns.decode('utf-8')
exceptUnicodeDecodeError:
returns.decode('gbk')
defapplication(environ,start_response):
host=environ.get('HTTP_HOST')
method=environ.get('REQUEST_METHOD')
path=environ.get('PATH_INFO')
ifmethod=='GET'andpath=='/':
start_response('200OK',[('Content-Type','text/html')])
return[b'<html><head><title>LearningPython</title></head><body><formmethod="post"action="/run"><textareaname="code"style="width:90%;height:600px"></textarea><p><buttontype="submit">Run</button></p></form></body></html>']
ifmethod=='GET'andpath=='/env':
start_response('200OK',[('Content-Type','text/html')])
L=[b'<html><head><title>ENV</title></head><body>']
fork,vinenviron.items():
p='<p>%s=%s'%(k,str(v))
L.append(p.encode('utf-8'))
L.append(b'</html>')
returnL
ifhost!=HOSTormethod!='POST'orpath!='/run'ornotenviron.get('CONTENT_TYPE','').lower().startswith('application/x-www-form-urlencoded'):
start_response('400BadRequest',[('Content-Type','application/json')])
return[b'{"error":"bad_request"}']
s=environ['wsgi.input'].read(int(environ['CONTENT_LENGTH']))
qs=parse.parse_qs(s.decode('utf-8'))
ifnot'code'inqs:
start_response('400BadRequest',[('Content-Type','application/json')])
return[b'{"error":"invalid_params"}']
name=qs['name'][0]if'name'inqselseget_name()
code=qs['code'][0]
headers=[('Content-Type','application/json')]
origin=environ.get('HTTP_ORIGIN','')
iforigin.find('.liaoxuefeng.com')==-1:
start_response('400BadRequest',[('Content-Type','application/json')])
return[b'{"error":"invalid_origin"}']
headers.append(('Access-Control-Allow-Origin',origin))
start_response('200OK',headers)
r=dict()
try:
fpath=write_py(name,code)
print('Execute:%s%s'%(EXEC,fpath))
r['output']=decode(subprocess.check_output([EXEC,fpath],stderr=subprocess.STDOUT,timeout=5))
exceptsubprocess.CalledProcessErrorase:
r=dict(error='Exception',output=decode(e.output))
exceptsubprocess.TimeoutExpiredase:
r=dict(error='Timeout',output='执行超时')
exceptsubprocess.CalledProcessErrorase:
r=dict(error='Error',output='执行错误')
print('Executedone.')
return[json.mps(r).encode('utf-8')]
if__name__=='__main__':
main()
2,再用一个记事本写如下的代码:
@echooff
pythonlearning.py
pause
另存为‘运行.bat’
3、把“运行.bat”和“learning.py”放到同一目录下,
⑹ 看完廖雪峰的python,但是感觉自己掌握不扎实,不知道该怎么做
python感觉自己掌握不扎实,不知道该怎么做
不管学习什么新的东西,效率最低但是又不可或缺的环节就是看教科书了。虽然看书的过程可能会很无聊,但是过一遍书至少能对整个知识框架有个大体的把握。我最早知道 Python 还是在《黑客与画家》这本书中看到的,书里面有一章节是讲编程语言的,作者很推荐把 python 作为学习编程的入门语言。我当时是把《简明 Python 教程》给过了一边,后来又看了一遍《深入python》,这里特别推荐《深入 Python》,除了介绍 python 的基本特性之外,还介绍了诸如函数编程、正则表达式、处理 HTML 和 XML等高级用法。除了看书,上公开课也是挺不错的,视频教学本来就比自己啃教科书有意思,而且完成课程作业也能锻炼动手编程能力。我上过两门不错的公开课,一门是莱斯大学在 Coursera 上开的《Python交互式编程导论》,一边学 python,一边写些小游戏,肯定不会觉得无聊;另一门就是 MIT 在 edX 上开的《计算机科学及python编程导论》,它是 MIT edX系列课程(XSeries)中的第一课,系列课程共两门,除了这门课以外还有《计算思维及数据科学导论》,不过第二门就没有上过了。
《简明 Python 教程》
《深入 Python》
《Python交互式编程导论》
《计算机科学及python编程导论》
另外,我和题主的情况有点像,也不是学计算机专业的,并且同样对自己的专业不感兴趣,以后也是想从事与数据科学相关的工作。我目前的状况都是在自学,上公开课,看教科书,跟大牛们的技术博客。
⑺ python是一门程序设计语言,学习python有什么好的视频教程
职业教育领域这两年发展得特别快,其中有一个培训项目就是编程语言python,早些年提到计算机语言,普通人听过的可能也就是C语言、Java之类的,但就在这几年,python突然就火了,而且一提到学编程,python也成了首选。这都是什么原因呢?python其实早在1991年就已经发布了,几十年后突然就火了这让人也挺奇怪的,下面我会就以下观点谈谈看:
一、学python有啥用它最主要的作用当然是用来编写程序了,我们平时在电脑端或手机端使用的各类应用程序底层都是一大堆代码,这些代码就是程序员们用编程语言写出来的,学会了python就可以像程序员一样,自己写应用程序了。
对于python这门程序设计语言,各位有过什么经历或感受吗,欢迎留言区分享。
⑻ 哪里有python自学教程
【033】Python(喵喵教程)网络网盘免费资源在线学习
链接: https://pan..com/s/1ZS20DsOp-_70wVD9NNxGow
【033】Python(喵喵教程) 量化金融项目 北京15期就业班
python课件 python开发工具 python基础班 Python3爬虫课程资料代码.zip
1-4 项目飞机大战 1-3 面向对象 1-2 python基础 1-1 Linux基础 14-vi编辑器 13-ubuntu软件安装 12-打包压缩 11-其他命令