我为什么学python学习手册

当我们学Python时,我们学什么? - 简书
下载简书移动应用
写了125274字,被1171人关注,获得了1762个喜欢
当我们学Python时,我们学什么?
虽然有时觉得Python简单得不像编程语言,知乎上也有人说,“requests 好用的让人想哭”。但当我们学习一门编程语言时,要学习哪些内容,怎么学习,还是很值得深入探究的。
先看一下Python官网上的说明:
Python官网
powerful, fast, easy,
对,这就是赤果果的广告。不过我用下来的感觉确是如此,最大的问题是在于它太强大了有太多的库,貌似没有一个地方可以集中查看所有库的文档( 算吗?)。那Python究竟能做些什么?
还是先看一下官网上的说明:
The Python Package Index (PyPI) hosts thousands of third-party modules for Python. Both Python's standard library and the community-contributed modules allow for endless possibilities.
Web and Internet Development
Database Access
Desktop GUIs
Scientific & Numeric
Network Programming
Software & Game Development
再看一下,大家都用Python做什么?
做网站后台
有大量的成熟的框架,如django,flask,bottle,tornado
写网络爬虫Python写爬虫很简单,库很健全
参加数学建模大赛,完全可以替代r语言和MATLAB
数据挖掘,机器学习
Python的机器学习包很多
最近spark,Hadoop都开了Python的接口,所以使用Python做大数据的mapreduce也非常简单
做系统部署,日常维护的脚本
看到Python的功能强大了吧。现在工作需要的一些网络数据抓取,我都用Python处理了。对于一个小白来说学习Python要注意些什么,哪些是重点,如果自学Python找一份开发的工作,重点又该是什么?
还是用数据说话,我用Python写了一段代码,把51JOB上上海地区Python职位的要求爬取下来,看看公司里对Python开发的要求是什么,这样你学习起来才更有针对性。
Python抓取列表页所有岗位链接
一共抓取了194个Python开发岗位
一、自学中一个最大的问题是,你没有找到应用的场景
大多数同学在自学一门编程语言时,是没有应用的场景感。就是不知道学了做什么用,讲不出具体、合理的应用。如果是有老师教,老师带着你学,是没有关系的。因为每一阶段做什么练习,做什么项目,知识点学到什么程度,老师都会帮你规划好。自学不一样,最好每个技能点都要有明确的应用场景感,这样学习起来目标、目的更强,不会出现看不到进步,自我否定而放弃。
学习Python,比较好快速找到应用的场景。如果马上可以找到解决工作生活中的问题,用Python来实现,学习的效果和效率就会立马得到提升。这种学习方法,采铜称之为“设计式操练”。
还是回到刚才知乎上的回答,有的人拿Python写了一个12306余票检测脚本;有的人用Python爬取图片和电影资源... ... 这些就是具体应用的场景感,然后分解功能,一步一步完成,Python可以用最少的代码来实现。
一定要破解 系列丛书《 从门到放弃!》
二、当我们学Python,我们学什么
1)如果学Python是想了解编程语言,做一些实用小工具来提高效率,那学习的主要内容应该是Python的网络访问(urllib, urllib2, requests),爬虫相关的库,正则表达式,
BeautifulSoup,XPath,Excel,数据库MySQLdb模块等,了解html网页。
这些知识熟练应用,从网络上抓取数据,再进行分析处理,完全没有问题。
2)如果你想学习Python语言找一份开发的工作,那看企业的岗位中有哪些要求。(一共194个Python开发岗位)
84个Python开发岗位是要求Web开发(后端开发)占43.3%,其中81个岗位明确需要django
118个岗位对Linux有明确的要求,占60.8%,74个岗位要求有Java开发经验占38.1%
26个岗位对PHP有要求,占13%
运维岗位4个,测试岗位3个
高级工程师岗位是26个,占13%
工作经验一般要求2年,一些岗位明确要求Python经验2年以上。
爬虫、数据分析相关的岗位17个,占8.7%
再看一下岗位需求量,我把Java的也列出来作一个对比:
Python岗位数量(个)
Java岗位数量(个)
Python语言作为工作中效率提升的工具,非常好用的。
Python好用易学,但作为程序员主力开发语言,要求比较高,大多需要其他语言的使用经验。Python作为程序猿的想扩展的新语言非常合适。
如果没有编程语言基础,想学习Python后从事开发,要求偏高。重点要放在Web学习,框架(Flask, Django)学习上,html, js 是基本。同时要打好Linux基础,可以多了解一些Java比较好。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
如果你是程序员,或者有一颗喜欢写程序的心,喜欢分享技术干货、项目经验、程序员日常囧事等等,欢迎投稿《程序员》专题。
专题主编:小...
· 176344人关注
玩转简书的第一步,从这个专题开始。
想上首页热门榜么?好内容想被更多人看到么?来投稿吧!如果被拒也不要灰心哦~入选文章会进一个队...
· 130729人关注
如果你要练习每天写一千字,这就是你打卡的地方。
卡片创作微信群筹建中,如有意加入,请加我个人微信:cnfeat,加我请注明「简书」
· 90450人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:我为什么要学习python-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
我为什么要学习python
来源:互联网 发表时间: 18:49:20 责任编辑:王亮字体:
为了帮助网友解决“我为什么要学习python”相关的问题,中国学网通过互联网对“我为什么要学习python”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:我为什么要学习python,具体解决方案如下:解决方案1:
许多学校还在教vb:def qsort(L),如果你是写java的。这在写算法时就能够表现出来;y!= right) { numbers[left] = numbers[right];*&#39,但是如果是用java,不可维护,我们大学的时候,(这也就是为什么, pivot-1), r_hold.先来一个接口,简直就是天壤之别:(以下代码来自啄木鸟社区,你还要写数组分区,这也就是为什么;) } } 恩, l_hold.: return x*y:def factorial(x)!= right) { numbers[right] = numbers[left],你在学习一个新的编程范式: if not L; l_hold = left, left.append(x) low = qsort(low) hig = qsort(hig) return low+lis[.: return [] else,这也就是为什么,for i: throw new Exception(&quot?&quot,说过的话: low..在比如;= pivot) && (left &lt,c++, double x,写一些构造;, right); if (left &lt?因为除了表达快速排序的思想,你为了编程; if (left .append(x) else.;=L[0]]) 因为动态语言,即使有IDE这样的东西.新手可以这么写,也可以面向过程但下面我们用“函数式编程”来谈谈它的好处下面是一个计算器的例子,是相比于象C和C++这样的语言。如果这么说首先我们来听听图灵奖获奖得主, int left.都有Class,你不得不去写一个main。就拿简单的阶乘函数吧,想要表达自己的思想.:] if x&gt,c#; while (left &+&#39: return x * factorial(x - 1) 高手这么写: if x &lt,首先一种被认为糟糕的写法是这样的,不够灵活: return 1 else,如果有版权问题: return x+y,C++这样的静态语言,java没有,比如我要写一个快速排序,学习了c; left = l_hold,人们常说;C程序设计& break: if len(lis) == 0:1]+hig 当然高手可以写的更短,在使用上; if (left : x and x * f(x - 1) or 1 FP函数式编程 python是面向对象的:] if x&又上了一遍; right) { while ((numbers[right] &gt,我马上删除)public class Calculator { static public double Foo( case &#39.,你可以自由的表达.: return x-y.这是因为; right)) left++,都可能出现错误; pivot) q_sort( left++,《大话设计模式》的第一章:如果用C语言写?很多时候是不值得,或者打开python交互式解释器就行了.学习曲线python很值得你去深入研究,所以要跟着规矩开这门课。那些相信“设计模式”和java的狂热分子,不可重用,我目前认识的几个编程大牛,或者想要马上做个例子看看.都有int 都有 pivot) q_sort(numbers.python的优点,算是值得学习么; r_hold =-' pivot = numbers[left],你所以为的一样就是大家都有For都有while:], 就没有那么容易.def qsort(lis), int right) { int pivot,要学习许多偏底层的东西,就是使用这个例子来阐述oop和设计模式的强大,因为你玩得越熟,学校的老师会C和java之类的; break: return [] return qsort([x for x in L[1; right--:1] + qsort([x for x in L[1;&#47,所谓的不一样就是用C有指针,c++把& right)) right--: low = [] hig = [] for x in lis[1,都不是计算机专业毕业的,比静态语言要活; } 为什么这么长;= pivot) && (left &lt:简单 我所说的简单,C#; case &#39,python高手写出来的代码,java初学者和java大师写出的代码差不多,能够为你带来代码生成器: return x&#47.;,): if x == 0:void q_sort(int numbers[]; } while ((numbers[left] &lt,它给你所带来的回报越高,j的多一少一,试验某个API,都有switch,而我做得就是写一段“脚本”; if (right &gt:f = lambda x, pivot+1,不可扩展,swap交换,但是python初学者,这就是为什么教育是失败的; case '; pivot = L[0]]) + L[0,Allan P;&#39,“如果一门语言没有改变你的编程思维,要开始改这个代码了; right = r_hold,那么它不值得你去学习”,我觉得我们大学的课程就是用: hig, double y) { switch(op) case ' } } numbers[left] = pivot,java,请告诉我; lis[0]
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号梦想破碎是没有声音的,它只是缓慢又沉默地离开了。 by 苏更生
【精彩解答1】
阶段一:前辈领进门。
第一眼是一个前辈给我看了看Python的代码,因为自己最早学习的是Java语言,第一眼看到Python的时候,前辈说,“Python是面向对象的”,然后就 打印了几句代码。可我怎么也看不出到底哪里是“面向对象”的。前辈说“在Python里,一切皆对象”,我才有点领悟的说道:“原来把什么看成对象,就是面向对象”,哈哈。
阶段二:开始看的是《Dive into Python》、《Leaning python》、《Python Doc》。
因为有很多语言学习经历,很快就完成了初步语法和使用学习。太复杂的特性还是在使用中逐步掌握的。
阶段三:开始使用Python做自己的一些日常工作。
比如Python搜索文件,Python批量处理等,使用最多的还是re模块和socket相关模块。写了大量的例子,让自己对Python更加喜爱,也更加熟悉。此时翻阅最多的是《Python Doc》的指南。不管是语言参考、库参考、Demo参考,都有大量可使用的内容,内容质量很高堪比JDK。
阶段四:生产上马。
开始使用Django,Flask,Tornado开发一些web应用,写一些日常使用的工具包等。逐步提升设计能力,和整体代码的管理能力。
阶段五:更合理的分配好C,Java,Python三门语言各自擅长的部分。
把合适的语言用到合适的地方。尽管一门语言有时候可以搞定所有的,但用擅长的语言解决合适的问题才是效率最高的。这也是“Python的大道至简”的理念带给我的帮助和认识。
PS:其中过程中主要的一些方法:
1、看书。学习的基础。
2、自己本地练习。编程还是要实践出真知。
3、资料查询。google,stackoverflow等多关注。
4、交流。各种论坛上的python group,论坛。最早去的CU,JavaEye,不过现在貌似去的少了。google group 必须订阅。
学习+实践+总结,掌握语言的法宝。
【精彩解答2】
其实python非常适合初学者入门,上手很容易。
我就是完全通过网上资源学了python的。
最大的是3点经验:
1.找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。
2.去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。
3.最好能找到一个已经会python的人。问他一点学习规划的建议,然后在遇到卡壳的地方找他指点。这样会事半功倍
推荐几个网上的资源:
在线教程:
简明Python教程:
(较新版):
Dive into Python:
【精彩解答3】
我最先看的是《》来熟悉一下语法,自己敲了一下代码,发现python很容易上手,渐渐喜欢上它。接着买了一本《python基础教程》,跟着书中的例子深入学习。这本书讲得很详细,浅显易懂。
当开始熟悉python的时候,尝试自己写一些脚本或软件来干一些有趣的事情。后来图像处理课程作业我也用python来完成。
与此同时,我坚持写来记录一下自己的学习心得。
现在我开始学习用python的web应用。这才是python擅长的领域。它有很多好用的框架例如django,tornado等,可以轻松地做一个网站,用python做网站后端也是一个越来越流行的趋势。
学习python,最重要的是要写出pythonic的代码,这不是一朝一夕的事情。我喜欢python,就是因为它的简洁和强大。不要重复造轮子,学会优雅地使用python。
附我看过的觉得不错资料
也应该订阅一些python大牛的博客
和邮件列表
or分享 (0)我为什么要学习python
查看: 7907|
评论: |原作者: 爱德华帝麒|来自:
摘要: 一开始的时候,我觉得有点气愤,因为当我跟同龄人说我会python的时候,他们一些人认为我就是在装X,一直有这种很不好的风气,比如我说我把OS换成了 ubuntu,用vim,或是emacs的也是在装X,他们一直听着大学里老师的
  一开始的时候,我觉得有点气愤,因为当我跟同龄人说我会python的时候,他们一些人认为
我就是在装X,一直有这种很不好的风气,比如我说我把OS换成了
ubuntu,用vim,或是emacs的也是在装X,他们一直听着大学里老师的信仰”语言都一样,重要的是编程思维“,所以学过
C,C++,JAVA,C#的人,总认为学习另一门语言比如(python),只不过是在学习另一种写while和for的方式,所以我想在这里写一篇文
章谈谈,为什么python很值得你在大学里,或者在以后的工作里一学。
& & 首先我们来听听图灵奖获奖得主,Allan Perlis,说过的话,“如果一门语言没有改变你的编程思维,那么它不值得你去学习”。
& & 所以,熟练的使用一门语言才能让你有真正的编程思维,你用什么样的编程语言就将决定你的思维,而不是你写的多了,就有那个所谓的编程思维。
& & 如果这么说,我们大学的时候,学习了c,c++,java,C#,算是值得学习么?很多时候是不值得,我觉得我们大学的课程就是用java,c#,c++把"C程序设计"又上了一遍.
这是因为,学校的老师会C和java之类的,所以要跟着规矩开这门课,(这也就是为什么,许多学校还在教vb,),这也就是为什么,你所以为的一样就是大
家都有For都有while,都有switch..都有Class...都有int
都有float,所谓的不一样就是用C有指针,java没有,这就是为什么教育是失败的,这也就是为什么,我目前认识的几个编程大牛,都不是计算机专业毕
python的优点:
& & 我所说的简单,是相比于象C和C++这样的语言,你为了编程,要学习许多偏底层的东西.
当然,你可能会问,python能干什么呢?python无所不能(当然,它不能帮你找女朋友),你java能做的,我用python都能做,你java
做不好的,我python也能做,虽然python被成为脚本语言,但它已经不算脚本了,就像火车已经不是"烧"着跑的了...
& & &比如,你脑子中突然有个什么想法,想要去实现它,或者你看见网上某个有趣的东西,想要自己动手去写个demo,那么用python可以很快的实现一个原型,之后你可以继续从这个原型出发去进一步探索,但是如果是java的话......
&在比如,你在学习一个新的编程范式,或者想要马上做个例子看看,试验某个API,如果你是写java的,你不得不去写一个main,写一些构造,即使有
IDE这样的东西,能够为你带来代码生成器,而我做得就是写一段“脚本”,或者打开python交互式解释器就行了。&
& & &而且python的第三方库也很多,你想马上就搭建个什么软件出来"也是比较容易的。
& & 内置的数据结构,list,tuple,内置的函数,各种方便的操作,让你“自由的表达”,有时候感觉写程序就是“信手拈来”...
& & 这在写算法时就能够表现出来,比如我要写一个快速排序:  快速排序的思想就是将一个序列通过基准分为两个序列,然后对着两个序列分别递归..
如果用C语言写:
[cpp] void&q_sort(int&numbers[],&int&left,&int&right)&&{&&&&int&pivot,&l_hold,&r_&&&&&&l_hold&=&&&&&r_hold&=&&&&&pivot&=&numbers[left];&&&&while&(left&&&right)&&&&{&&&&&&while&((numbers[right]&&=&pivot)&&&&(left&&&right))&&&&&&&&right--;&&&&&&if&(left&!=&right)&&&&&&{&&&&&&&&numbers[left]&=&numbers[right];&&&&&&&&left++;&&&&&&}&&&&&&while&((numbers[left]&&=&pivot)&&&&(left&&&right))&&&&&&&&left++;&&&&&&if&(left&!=&right)&&&&&&{&&&&&&&&numbers[right]&=&numbers[left];&&&&&&&&right--;&&&&&&}&&&&}&&&&numbers[left]&=&&&&&pivot&=&&&&&left&=&l_&&&&right&=&r_&&&&if&(left&&&pivot)&&&&&&q_sort(numbers,&left,&pivot-1);&&&&if&(right&&&pivot)&&&&&&q_sort(numbers,&pivot+1,&right);&&}&&&
为什么这么长?因为除了表达快速排序的思想,你还要写数组分区,swap交换,for i,j的多一少一,都可能出现错误....
如果是python呢?
[cpp] def&qsort(lis):&&&&&&if&len(lis)&==&0:&&&&&&return&[]&&&&&&else:&&&&&&low&=&[]&&&&&&hig&=&[]&&&&&&for&x&in&lis[1:]:&&&&&&&&&&if&x&&&lis[0]:&&&&&&&&&&low.append(x)&&&&&&&&&&else:&&&&&&&&&&hig.append(x)&&&&&&low&=&qsort(low)&&&&&&hig&=&qsort(hig)&&&&&&return&low+lis[:1]+hig&&
当然高手可以写的更短:
[cpp] def&qsort(L):&&&&&if&not&L:&return&[]&&&&&return&qsort([x&for&x&in&L[1:]&if&x&&L[0]])&+&L[0:1]&+&qsort([x&for&x&in&L[1:]&if&x&=L[0]])&&
因为动态语言,在使用上,比静态语言要活,你可以自由的表达,但是如果是用java,C++这样的静态语言,想要表达自己的思想, 就没有那么容易.&
& & &python很值得你去深入研究,因为你玩得越熟,它给你所带来的回报越高,人们常说,java初学者和java大师写出的代码差不多,但是python初学者,python高手写出来的代码,简直就是天壤之别。
就拿简单的阶乘函数吧.
新手可以这么写:
[cpp] def&factorial(x):&&&&&&if&x&==&0:&&&&&&&&&&return&1&&&&&&else:&&&&&&&&&&return&x&*&factorial(x&-&1)&&
高手这么写:
[cpp] f&=&lambda&x:&x&and&x&*&f(x&-&1)&or&1&&
FP函数式编程
python是面向对象的,也可以面向过程
但下面我们用“函数式编程”来谈谈它的好处
下面是一个计算器的例子,《大话设计模式》的第一章,就是使用这个例子来阐述oop和设计模式的强大,
首先一种被认为糟糕的写法是这样的:
(以下代码来自啄木鸟社区,如果有版权问题,请告诉我,我马上删除)
public&class&Calculator&&{&&&&&&static&public&double&Foo(char&op,&double&x,&double&y)&&&&&&{&&&&&&switch(op)&&&&&&&&&&case&'+':&return&x+y;&&&&&&&&&&break;&&&&&&&&&&case&'-':&return&x-y;&&&&&&&&&&&&&&break;&&&&&&&&&&case&'*':&return&x*y;&&&&&&&&&&break;&&&&&&&&&&case&'/':&return&x/y;&&&&&&&&&&&&&&break;&&&&&&&&&&default:&&&&&&&&&&throw&new&Exception("????")&&&&&&}&&}&&
恩,不可重用,不可维护,不可扩展,不够灵活。
那些相信“设计模式”和java的狂热分子,要开始改这个代码了.
先来一个接口:
public&interface&Ioper&&{&&&&&&double&getResult(double&x,&double&y);&&}&&
然后在开始interface这些
public&class&OperatorAdd&interface&Ioper&&{&&&&&&public&double&getResult(double&x,&double&y)&&&&&&{&&&&&&return&x+y;&&&&&&&}&&}&&&&public&class&OperatorSub&interface&Ioper&&{&&&&&&public&double&getResult(double&x,&double&y)&&&&&&{&&&&&&return&x-y;&&&&&&&}&&}&&&&public&class&OperatorMul&interface&Ioper&&{&&&&&&public&double&getResult(double&x,&double&y)&&&&&&{&&&&&&return&x*y;&&&&&&&}&&}&&&&public&class&OperatorDiv&interface&Ioper&&{&&&&&&public&double&getResult(double&x,&double&y)&&&&&&{&&&&&&return&x/y;&&&&&&}&&}&&
之后他们获得了所谓的可重用,可扩展.....
[java]public&class&TheMainClass&&{&&&&&&public&static&void&Main()&&&&&&{&&&&&&Ioper&cul&=&new&OperatorAdd();&&&&&&double&resu&=&cul.getResult(3,4);&&&&&&System.out.println(resu);&&&&&&}&&&}&&
现在我来告诉你如何用python来实现...
[python]def&foo(op,x,y):&&&&&&print&eval("%d%s%d"%(x,op,y))&&就这两行...为什么会这样?因为python支持FP(函数式编程),在函数式编程中,函数变成了一等公民。
当然这里面有一定的开玩笑成分,不过,FP编程就是那么神奇,当你在学oop遇到瓶颈,或者oop已经用的很熟练的时候,不妨去学学FP(函数式编程),python就支持函数式编程,当然你也可以尝试下lisp的方言比如(Haskell).
&所以,如果你学习python,你会越来越迷恋python,无法自拔.
Author:aiqier
刚表态过的朋友 ()
快毕业了,没工作经验,
找份工作好难啊?
赶紧去人才芯片公司磨练吧!!

我要回帖

更多关于 python学习 的文章

 

随机推荐