微信号:imooc-com

介绍:慕课网是一个超酷的互联网、IT技术免费学习平台,创新的网络一站式学习、实践体验;服务及时贴心,内容专业、有趣易学。专注服务互联网工程师快速成为技术高手!

Python学习遇到的干货问答合辑

2017-05-12 08:11 慕课网



花式填坑第二期话题是“人生苦短 我用Python”。为此精选出大多数用户学习Python会遇到的场景问题,帮助你更进一步认识Python,从而更好地学习Python。



Q
&
A



 1. 学JavaWeb的有必要学PythonWeb么?目前市场开发的python更多是测试和自动化岗位吧?web市场中,大型的项目被java占领,小型的有php,python如何在web市场分一杯羹?优势劣势在哪?python在其他方面,比如爬虫啊,数据挖掘等方面的就业前景和学的要求怎么样?麻烦老师解答一下,谢谢


bobby讲师:这个不是有没有必要的问题, 不论用什么语言都可以开发出web系统, python, php, java都行,如果单就从实现功能的角度来讲都没有区别, 都能实现, 但是要考虑到开发效率, java是完全没法和python比的, 比如一个小的系统, 用java开发,你要去打开ide,配置maven, 下载spring等等框架配置好开发环境,编写代码然后编译成class之后再运行,这些其实可能一个python文件都能搞定的事情,等到你把开发环境搭建好,python都已经开发完了。 当然这里只是拿了一个小系统做例子, 大系统也是一样的, 这里只是讨论了一个开发效率问题。 如果单就从开发功能上来讲, 用javaweb开发出来之后如果你不考虑以后想提升开发效率的话,当然不用去学习python web开发。

目前市场上python的职位远不止测试和自动化岗位, 你如果去做云存储之类的就知道openstack实际上就是用python开发的, 很多只要涉及到这块的都会招python开发。 实际上很多web项目立项之初用java立项的原因都是因为考虑到java人才容易招到而不只是java本身有多大的优势。 实际上很多创业公司开始逐步转向用开发效率高的python和php作为web开发。而且java在web系统方面也在逐渐被python, go 和nodejs蚕食。

python目前在python和数据处理领域几乎都是首选语言,后期随着人工智能时代的来临, 很多公司特别是小公司会急于向数据方面考虑首先第一个要解决的问题就是爬虫爬取数据, 所以数据和爬虫职位近两年应该会逐渐增多。



 2.老师您好,现在python作为一门最贴近生活的语言,我打算把他当做副语言作为兴趣来学习……您有没有好的建议或者看法帮助我少踩一些坑,感觉python是很符合解决生活中遇到问题的语言……


bobby讲师:如果想把python当做自己的第二语言, 最好事先有个概念就是:哪些问题我要用python来解决?如果能用python解决就优先使用python解决。在学习的过程中切记不能摇摆不定,比如由于我是不是应该继续学下去, 我到底应该学习哪些具体知识。 


最好通过具体的一个库或者框架去解决现有的问题以此来加深自己对python的理解才是学习语言的正确姿势,脱离了具体问题来学习都是效果最不好,而且经常忘记的。 第二就是一定要善用google以及要懂得看错误提示, 要在一大推的错误栈中找到最关键的错误并拿着这个错误去找答案才能高效的解决问题。



3.Python Django学到什么程度能找到一份实习岗位?怎么写一份python web开发的简历呢?这种岗位哪里比较多?南京好像不多


bobby讲师:通过django学习python的web开发是比较好的选择, 因为django几乎会涉及web开发的所有功能, 这些功能能让你快速理解开发一个web系统需要什么知识。

1. 对个一个需要找工作的人来说, 学到什么程度才能找到工作真的无法描述出来, 但是一定要明白, 对于没有工作经验的人来说,项目经验是最重要的, 只有真正做过项目的人才能明白要想做出一套web系统需要的知识除了框架本身之外还需要计算机网络等知识, 比如cookie和session的使用,这些知识都是开发过程中会遇到的问题。经历过一个完整的项目你才能明白django中为什么会有model, view,form, url和templates以及为什么要将这些独立成各个模块。通过项目将所有知识点串联起来才是最好的学习方法。

2. python的web开发简历中你需要写清楚两点:

 你使用的技术是什么 ?项目中你负责的是哪一部分? 

第二点非常重要, 比如你最好写清楚你使用了view里面的什么逻辑, 你设计的model的具体业务是什么? 你使用的django form解决了什么问题?

3. python的开发工作目前在北京最多, 上海,成都, 深圳, 杭州等都有python的web开发工作。

4. python的web开发岗位你不一定非要投递那种明确写明了django的职位, 你也可以投递写明了python web开发的岗位。如果简历筛选过了说明对方对django是有需求的。只需要准备好django的基础知识就行了。 有了django基础学习其他框架会比较简单



4.请问pthon2.X和3.X不同的版本,不同版本之间也存在着不同语法。本人做java的,学习中觉得3.X版本跟java语法更为贴近,但是很为教程都是以2.x主讲的。新手入门学习时,应以哪一个为主?另外python基础学完后的学习路线应该如何规划,另外可否麻烦老师给一个python新手学习路线图?


bobby讲师:python2和python3的语法差别不大,如果你会python2的话,通过两天时间就足以转换到python3了,python3和python2最大的区别就是字符串编码了,以及部分库换了存放的位置了而已。 

但是目前实际工作中的应用还是以python2.7为主, 所以你选择哪个都无所谓,如果只是单纯的学习为主你可以选择python3学习。


python基础学完以后你首先需要明确你需要学习的是什么? 这里推荐的是web系统开发和爬虫开发, 这两个放心是最适合自己学的, 学习web系统开发的话可以先学习django,django是一门全栈的web开发框架, 可以帮你快速理解开发一个web系统需要开发哪些东西。然后如果django熟练的话就可以去学习flask和tornado, 去自己实现一个自己想要的更全面一点的web开发框架。 爬虫的话可以首先通过requests和gevent去实现一个爬虫, 了解了爬虫的基本原理之后就可以去用scrapy去写自己的爬虫系统了。 最后再通过结合django和scrapy完成一个完善的爬虫以及爬虫控制系统了

学习完了上面之后你就可以学习一下python的进阶知识了, 关于python的进阶学习可以在知乎上找, 资料很多的



5.请问老师python如何进阶学习?


bobby讲师:python进阶这个问题需要细化一下, 你是需要在web开发领域的python进阶呢, 还是只是python语言本身的进阶上面, 如果比如web开发领域的进阶对你来说最重要的除了python语言本身以外还包括网络知识, 数据库知识进阶, 架构设计进阶, 缓存的设计等等, 这些知识除了python本身以外还有很多基础知识。 如果你只是python语言本身的进阶上你就可以去深刻的理解动态语言的各种特性, 比如函数变成, 偏函数, python的各种魔法函数,生成器,python底层的c语言数据结构,python mro算法,python 猴子补丁,__ metaclass__等等知识点比较多



6.因为python在各种方向的的适用。作为一个职场新人,很想了解下python的各个发展方向,及各发展方向应该具备pyhon的哪些技能,怎样开始学习可以少走弯路,有效率的精通某一方向。


bobby讲师:python使用的领域很多包括自动化测试开发, 运维开发, web系统开发, 爬虫, 大数据, 桌面应用开发,云计算等。这些领域你需要选择一门自己感兴趣的领域然后再去学习各个领域的框架和库。


接下来介绍一下各个领域的框架: 

自动化测试: UIAutomator,Appium,Unittest, selenium等 。

运维开发:jekins, zabbix, django等

 web系统:django, flask, tornado,bottle, web.py, Pyramid等等

爬虫:scrapy, pyspider等 大数据:numpy,scipy等等 

桌面应用:wxPython, pyqt等



7.几乎万能的第三方库确实方便了开发,但是会不会导致编程能力退化呢?第三方库会不会有安全性问题?


bobby讲师:这个问题分两面看:第一如果什么都自己写,会有两个缺点:第一费时,第二代码写的难看。代码或者代码设计风格都是模仿出来的, 多看看第三方的优秀代码,不仅能加快开发速度而且能学习到如何设计出一个好的代码架构。


 但是如果经常用第三方,而不去理解到内部实现原理以及不去看源码设计优良的地方,就容易造成对代理的理解不深。



8.为什么人工智能的第一开发语言是python?


bobby讲师:人工智能不一定非得用python才行, 其他语言都可以。但是谷歌的TensorFlow基本上所有的代码都是C++和Python,其他语言一般只有几千行 。如果讲运行速度的部分,用C++,如果讲开发效率,用Python。


Python虽然是脚本语言,但是因为容易学,迅速成为科学家的工具(MATLAB也能搞科学计算,但是软件要钱,且很贵),从而积累了大量的工具库、架构,人工智能涉及大量的数据计算,用Python是很自然的,简单高效。Python有非常多优秀的深度学习库可用,现在大部分深度学习框架都支持Python。



9.阅读flask框架的源代码感觉入门困难(从最早期的版本开始阅读的),无法体会到精髓,请问老师有没有好的建议,好的技术博客可以分享下。


bobby讲师:flask本身因为是一个小型的只实现了web框架内核的框架, 让我们可以自由的发挥自己的编码能力,但是这样也造成了不同经验的人用flask写出来的代码会有很大差别, 所以如果你是flask初学者不建议去阅读源码, 要先学会使用flask然后在某一个方面如果觉得自己想深入一下再去阅读某一个功能的源码, 长期坚持下来就弄懂了,想集中弄懂一个系统的源码几乎是不现实的。 一定要将框架用熟练到某个程度之后再去阅读源码,flask学习可以首先看官方文档, 然后你可以看看这篇文章: http://python.jobbole.com/87323/



10.阅读flask框架的源代码感觉入门困难(从最早期的版本开始阅读的),无法体会到精髓,请问老师有没有好的建议,好的技术博客可以分享下。


bobby讲师:编程最重要的是自己的兴趣以及对解决问题本身的投入程度, 也要看自己对技术的应用频繁程度。


有些技术比如django,有人有机会在3个月内需要开发一个web系统,而且各种功能和性能都有要求, 那这个人成长就很快。有些人比如用django开发一个小系统而且时间不着急, 两个人的学习密度就完全不一样。


 所以解决问题本身以及自己给自己施加的压力才是保证自己学习效果的最好方法。等到自己多解决几个问题自然就知道自己下一步该做什么了, 所以无法给你一个具体的时间, 遇到问题就想办法解决并做好,然后反复的问自己还能不能做的更好,或者还有没有细节没有解决, 多深入细节很重要。

讲师介绍

bobby 讲师,Python全栈工程师。多年爬虫、PythonWeb开发经验,精通django,Scrapy,elasticsearch。 开发了多款基于Scrapy,django和elasticsearch的Web系统及搜索引擎等商业应用,具备丰富的互联网产品研发经验。现任某创业公司的CTO,南京大学计算机专业硕士毕业。


讲师相关教程推荐

点击下图,即可查看





新一期花式填坑来了

话题是“ 高性能框ThinkPHP5.0 ” 

戳阅读原文

抢先一步,与BAT大咖共同探讨吧

 
慕课网 更多文章 慕课网紧急@所有人,你的第一张BAT入场券马上要过期了! 奥运来了,抢书啦,先到先得 2小时搞定移动直播App开发 开始学习 4 年前端狗,2 年 CTO,一个程序员六年的奋斗史 教师节,老师竟然送你礼物!(9.10日,不限名额!!!)
猜您喜欢 Holodesk - A distributed cache layer for interactive analysis 给实习生\/导师的一封信 尼尔森发布营销云产品(Marketing Cloud) 基于 Mesos、Docker 和 Nvidia GPU 的深度学习平台实践 Vue 2.0学习笔记:创建Button组件