标签归档:Python知识问答

知乎上这么多推崇学 Python的,如果学完这一套找不到工作怎么办?

Python 的岗位本来就比较少,而且大部分都对经验要求比较高,没有什么初级岗位啊。尤其是非北上广城市,职位数量少,要求反而比一线城市更高,我个人对这些人转行不看好,欢迎指正。

答案:

这个问题,确实很有价值。

毕竟,掌握一门技能,是需要花成本的。决策之前,做个前景判断,衡量投入产出比,是应该的。

然而,一旦深入思考,你可能自己就会对学 Python 的价值,颇为疑虑。

因为大部分人看待这个问题,是在判断 Python 学过后,能否提升自己的竞争力。

国人常说的俗谚,有一句“一招鲜,吃遍天”。也就是掌握了某种供不应求的技能,于是可以坐享这种技能带来的益处与红利。

你可以暂停阅读20秒钟,在头脑里,自行匹配满足上述条件的相应技能,或是代表该技能的证书。

想好后,咱们继续。

这样的技能,确实是存在。但是,要达到“吃遍天”的效果,需要你衡量市场上的供求关系。

我们都知道,近几年市场对 Python 的需求确实很高。许多岗位招聘条件里面,都有 Python 这一项。

然而,供求关系的另一方,也就是供给,情况如何呢?

很不容乐观。

我不是说供给太少,而是太多了些。

别忘了, Python 最大的特点,就是简单易学。

因此,没有门槛,没有护城河,连上小学的孩子,课本上都要教 Python 了

需求再大,如果供给是这样的,价格也很难上去。

所以,如果你的打算,是学好 Python 以后,直接用它变现,那你一定要三思而后行。

这是不是说,你不该学 Python 呢?

恰恰相反,你真的应该学 Python 。

你可能会疑惑:老师,你这不是前后矛盾吗?

不是。

Python 要学,但这项技能,真的不是这么应用的。

连接

Python 无门槛,这么简单,学会了也毫不稀奇,那学它还有什么用?

用处大了。

因为它可以让你和一张巨大的协作网络连接起来。这张网络的溢出效应,对你来说益处可谓巨大。

举个例子。

机器学习听说过吧?最近很火的。

从前人们做机器学习,用的工具叫做 Matlab 。

直到6、7年前,当 Andrew Ng 制作后来成为经典的《机器学习》课程时,用的工具还是 Matlab 。

当然,因为当时 Matlab 很贵,所以 Andrew Ng 鼓励大家用 Octave (一种 Matlab 的开源实现版本)替代。

我学这门课程的时候,很痛苦。其中最重要的原因,就是 Matlab / Octave 的使用。

这是当时做的第 8 次作业,你看看为了做个协同过滤(Collaborative Filtering),需要多少个文件。

随便打开一个代码文件,是这样的:

结果是,大部分学员,根本就不知道,该如何完整撰写一个协同过滤算法的程序。大家只能满足于课程的要求,即在每个文件指定的位置上,做完形填空。

因此,那时候你要是打算使用机器学习,就必须要抱着一本 Matlab 的书啃下来。因为只有明白了它怎么用,你才真正能壮起胆子,尝试从头到尾,去实践自己从 MOOC 学来的机器学习技能。

然而,短短几年之后,事情就完全变了。

2017年,Andrew Ng 的 Coursera 课程《深度学习》推出,这次,他再也不提什么 Matlab 了,从头到尾都是 Python 。

Andrew 教起来轻松,大家学习起来开心。而且更妙的是,因为 Python 简单易懂,因此全部示例代码,你可以很容易看明白,并且知道当应用于自己的实际项目时,修改哪些部分,就可以复用。

其他基于 Python 的机器学习课程,也像雨后春笋一般遍地开花。

例如在 fast.ai 的课程里,实现同样的协同过滤功能,你再也不用写那一堆 Matlab 文件和函数了。

你需要的,仅是以下这几行代码:

from fastai.collab import *
path = untar_data(URLs.ML_SAMPLE)
ratings = pd.read_csv(path/'ratings.csv')
ratings.head()
data = CollabDataBunch.from_df(ratings)
learn = collab_learner(data, n_factors=50, y_range=(0.,5.))
learn.fit_one_cycle(5, 5e-3, wd=0.1)

好了,搞定。

Python 没有门槛。但是通过掌握它,你可以用更短的时间,更高的效率学习和掌握机器学习,甚至是深度学习的技能。

注意,能以这么短短几行代码搞定问题,不是因为你学了 Python ,所以技能大涨。

那是因为这个巨大协作网络中开发框架的人,“刚巧”也是用 Python 来封装细节。你们在说同样的语言,因此你可以把他们的研究成果,“拿来”使用。

越来越多的高手都使用 Python 来编写框架、制作工具,因此会吸引更多人来用。

越来越多的人习惯用 Python 来完成某项功能,那么开发功能的人也被绑定在这个路径上,只能选择用 Python 来开发。

这样的一个正反馈循环,就像在滚雪球。

你可能很为那些好不容易掌握用 Matlab 做机器学习的人鸣不平,似乎他们才是会真功夫的人。而学了 Python 的人,都有作弊之嫌。

才不会。能掌握 Matlab 的人,都可以很容易学会 Python ,他们也可以立即加入这张协作网络,享受这种便利。

好玩儿的是,2017年, Matlab 开源了一本机器学习教材,供大家免费下载。

你猜群众的反馈是啥?

排在第一位的,是这样:

为什么?人家好心好意给你书,你为何不要?

看这个曲线。

这是 Google 趋势上面,用“matlab machine learning”和“python machine learning”分别检索,得来的结果。

可以看到,如果今天你选择用 Matlab 来做机器学习,你的协作网络,和 Python 比起来,小得可以忽略不计。

这网络里面,包括为你打造工具的高手们,为你提供教程的人,也包括你潜在的合作伙伴……

你是希望自己的网络大一些,还是小一些呢?

方法

了解了 Python 的特点,你也就大略知道,该怎么去学它了。

我见过不少初学者,深吸一口气,摆开阵仗,恨不得投入一年的时间,“系统”掌握它。

其实没必要这么如临大敌。

如果教材编写者假设,儿童都能在一个学期内学会 Python ,你一个受过高等教育的成人,学起来应该更轻松才对。

其实你看现在那些好的 MOOC 里面(主题包括但不限于数据分析、数据可视化、机器学习、深度学习……), Python 学习大概是怎么做的。

他们会说,这门课咱们要用到 Python ,所以,本课程的第3章,是 Python 的学习。

对,Python ,这门编程语言,只占了一章的篇幅。

学一章,就掌握 Python 了?

看你怎么定义“掌握”了。

要是说你对 Python 的知识全面系统获取到了,那简直是在骗人。

就像你学龄前的时候,基本上也算能用中文对话了,对吧?

但是,你知道“回”字有四种写法吗?

人家授课者的意思是,学了这些 Python 知识,在他这门课就算够用了。

后面如果出现没有涉及过的函数或者方法,给你简单说几句,就可以继续学习了。

你千万不要用背单词的方式来学 Python ,那效率会低得惨不忍睹。

说句题外话,即便你用背单词的方式来学英语,我也不推荐。

你学 Python ,就应该是快速掌握一个最小核心技能集,例如知道怎么赋值、怎么判断、怎么循环,然后会自定义一个函数,可以输入输出东西……好了,可以上路了。

因为大部分的工作中,主要就用上述这些功能。遇到不明白的,直接查文档。Python 的文档,只要你不嫌弃它太详细就好。

查文档搞不定的问题,也没关系,反正这门语言,世界上有数不清的人都会,论坛上发帖问呗。这是给别人提供实现自我价值的机会。说实话,这机会不好碰到,说不定有人甚至会感谢你的提问呢。

你看,这样一来,你的技能来自于对真实问题的挑战,这样学起来,你的动力更足,学会之后你的满足感更强。而且,你的记忆,会更加深刻。

资源

学习 Python 的资源,我在《如何高效学Python?》一文中已经为你详细做过介绍和推荐,这里就不再赘述了。

此处只介绍我最近发现的2个新资源,都是免费的。

一个是 IBM 提供的系列课程。其中的 Python 基础课,叫做 Python for Data Science ,编号 PY0101EN 。网址在这里

除了免费、自主决定学习进度外,这门课的好处在于提供在线的 Jupyter Lab 编程环境。初学者最容易遇到的环境配置陷阱,在这里统统不存在。

如果你更喜欢读书的方式来学习,这里有一张交互式的数据科学教材汇总图。

你可以着重看其中的 Python 部分。

注意这张学习路线交互图是免费的。里面介绍的书,有的免费,有的收费。你可以酌情选择。

小结

通过阅读本文,希望你能掌握以下知识点:

首先,Python 本身不是什么独门绝艺,不要被人忽悠,以为学了 Python 就能……;
其次,Python 是你连接到一个巨大协作网络的桥梁,网的正外部性会让你充分受益。偏偏这桥梁还没有守卫,因此你,即便是个听到技术就头痛的文科生,也可以轻松进入;
第三,学习 Python ,不要追求系统,更不要舍本逐末去死记硬背知识。采用“快速掌握核心知识+解决实际问题中练习补充”的方式,更为有效;
第四,推荐了一些优质免费资源给你,希望能有帮助。

综上,学 Python ,确实有助于提升你的竞争力。但是再强调一遍,那竞争力,并非来自 Python 本身。

祝学习愉快!

喜欢请点赞和打赏。还可以微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)

如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《如何高效入门数据科学?》,里面还有更多的有趣问题及解法。


作者:gashero
链接:https://www.zhihu.com/question/60787862/answer/329788391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

举几个数字,略残酷,希望不要抹杀了大家的积极性。

中国现存程序员约185万人,2017年高等教育毕业人数795万人。截止2017年末,中国高等教育人口总数约1.85亿。

http://www.sohu.com/a/165615021_475887

http://study.ccln.gov.cn/fenke/shehuixue/shjpwz/shfcyld/381468.shtml

虽然程序员中有极少数没有接受过高等教育,但至少主流是受过高等教育的。这个数字至少意味着每年广义电子信息类毕业生总量是超过程序员历史存量的,或者说,即便是学了未来可能做程序员的专业,大部分人也没法做程序员。

好消息是相对其他专业,程序员的薪资较高,没有过多对历史身份的限制,即不管你之前学啥专业,在哪个学校毕业,只要能力符合要求,就可以成为程序员。

成为程序员的最大门槛,就是脑力,我没有用智力这个词,主要是因为希望脑力这个词也包含了长时间大强度用脑的意思,而不仅仅是灵光一现的智力。

很多人推荐大家从Python入门进入程序员,除了如上薪资高,没身份门槛外的优势外。也是希望能够帮助那些有编程天赋的人发现自己的天赋,并成为程序员。

但这种建议并不能确保你学了Python就能成为程序员,可以说绝大部分人学了以后肯定做不了程序员。

假设程序员的平均职业生命是10年,有些人会做的更长,也有很多人早早转行去创业,做销售,做产品、被辞退之类。那么每年会有18.5万职位空缺出来,加上新增职位,可以假设为每年新产生程序员职位约20万。那么新人就是要抢这大约20万个程序员职位。相对毕业人数,大约是2.5%的人可以成为程序员。

所以,做个比喻,不从悬崖上跳下去,你怎么知道你不是鹰呢?不试试Python,你怎么知道自己不适合编程呢?相对于以往死气沉沉熬资历的时代,有个机会能挑战一下自己已经很美好了。

学python都用来干嘛?

我最近学python,不过不知道怎么练习,不知道用来写什么。大家都用来干嘛的?都说说python可以用来写什么好玩的东东。

答案

能写的东西可太多了,日常生活的有这么些有趣的教程

比如哄哄女朋友:Python导出微信聊天记录并生成词云

向手机发送通知:教你如何使用Python向手机发送通知(IFTTT)

文献搜索工具你不得不知道的python超级文献搜索工具

制作日历Excel+Python=精美壁纸日历 任意DIY

如果你想成为超级极客,可以看看这些文章:

树莓派+智能音箱Python声控普通风扇Python声控开机

树莓派+摄像头:Python人脸识别开机

Python 深度学习图像风格迁移

零基础学接私活,Python还是Java。学哪个语言比较好?

零基础自学编程,Python还是Java,目的是接私活。请问学哪个语言比较好?

答案:

零基础推荐学Python,那么多计算机领域以外的人都用Python不是没有原因的:

  1. 开发速度快,各种开源任你用
  2. 开源社区强大,想做什么都找得到代码
  3. 简单易学,代码易懂

不过私活的方向大概是三条:1.做网站、2.爬虫、3.数据挖掘。

往哪一条线路走深一点其实都能赚钱。

怎样下载和安装Python?

怎样下载和安装Python?

原文地址:Python安装教程

Python 安装教程

这一部分的教程,我们将为大家讲解如何在各个平台的系统上安装Python.

在windows上安装Python

下载Python的最新版本:访问链接 https://www.python.org/downloads/。本文的这个部分,我们将在Windows操作系统上安装Python 3.7.4,大家也可以自行选择最新版的下载。

进入下一个页面后,拉到最下面,选择windows x86-64 excutable installer下载。

双击下载完成的应用程序:

记得一定要勾选ADD Python 3.7 to PATH. 否则cmd无法运行Python. 然后选择Install Now进行安装,默认会安装pip,而且将安装到C盘(推荐)。如果你希望换一个盘安装,可以点击Customize installation 在里面选择其他的盘。

在macOS上安装Python

其实macOS上是默认安装了python的,只不过版本是Python2.7, 其相对于现在的Python 3缺少了很多特性,而且速度也比Python 3慢,因此我还是建议大家装Python 3.

同样地,下载Python的最新版本:访问链接 https://www.python.org/downloads/。本文的这个部分,我们将在macOS操作系统上安装Python 3.7.4,大家也可以自行选择最新版的下载。

进入下一个页面后,拉到最下面,选择macOS 64-bit installer下载。

下载完成后得到一个pkg文件,双击打开。按照指示步骤进行安装即可。

了解更多

更多有趣的Python教程欢迎关注公众号:Python实用宝典

或者访问网站:Python实用宝典

学习Python总是学了新内容又忘了旧的咋办?

学习Python总是学了新内容又忘了旧的咋办?

答:

对于这些碎片化的知识,你只要基本知道、用过就行。

真正应用的时候是少不了查谷歌、查文档的。


查文档没关系的,文档本来就是用来查的。

一个高效的学习者是不必把查文档就能搞定的东西记在脑子里的,毕竟每个人脑容量都有限。

脑子这么好的东西,聪明人都是拿它当CPU和内存用的,只有傻子才拿它当磁盘用。

我周围圈子里还是有不少掌握十几门语言甚至几十门语言(并且很多门都能在OJ上刷到顶尖水平)的人的,我不相信他们写任何一门语言都不用查文档(更激进一点说,我相信这些多语言者写大部分语言的时候都得抱着文档写。至少我就是这样 ),但这不妨碍他们写出优秀的代码。

能不查文档写个别语言在个别应用领域的一点代码,这只是对熟练工人的标准而已。

但是能学会各种语言,解决各种应用领域的问题,并且能熟练地查文档,利用计算机的存储能力扩展自己的脑容量,这才是一个优秀程序员应该追求的事情。

作者:罗宸
链接:https://www.zhihu.com/question/339075006/answer/782196215
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


认真的来讲,Matlab和Python的区别在哪?为什么大家都对python趋之若鹜?

认真的来讲,Matlab和Python的区别在哪?为什么大家都对python趋之若鹜?

答:

Python比Matlab好的地方:

  1. Python开源社区很活跃,工具特别多;Matlab开源社区比较少,也没有这样的氛围。
  2. Python技术栈可以覆盖到Web开发、数据分析、数据挖掘、后台开发等等;Matlab相对单一。
  3. Python第三方太多了,有第三方可以调用JavaScript绘制精美的图形,所以Python的绘图能力比Matlab强一些,见精美的Plotly库;有第三方是用C写的,比如Numpy,底层其实是用C写的,极大加快了Python的数据处理速度,正是因为它们的存在,实际上Matlab相对于Python的速度优势已经越来越弱了;
  4. Python体积小、非常容易下载、开源免费;Matlab,嗯;
  5. Python可以开发许多有意思的应用,比如:
    树莓派+智能音箱Python声控普通风扇Python声控开机
    树莓派+摄像头:Python人脸识别开机
    Python 深度学习图像风格迁移

Matlab比Python好的地方:

  1. 价格昂贵,有利于提高国家GDP.
  2. 滋生盗版,有利于各大软件平台的流量,站长有钱消费了,国家GDP也会相应提升。
  3. Matlab simulink 生成 C 代码确实非常方便,许多领域的模型开发需要用到。

开玩笑归开玩笑,Matlab确实有某些行业暂时无法用Python替代的理由,但是随着Python开源社区的发展,这些理由有可能不再成为理由。

什么情况下需要使用 Python 的 asyncio 模块?

使用 Python 编程已经一段时间了,却从来没有用到过 asyncio 这个模块。所以想知道到底在哪些场景下应该使用异步编程呢,从而使用到 asyncio 这个模块?是否用一些非常具体的例子呢?

举个例子。

爬取某个平台下的所有图片的时候,我们需要下载图片,如果你一个个地下载会出现这样的情况:

  1. 如果某个请求堵塞,整个队列都会被堵塞
  2. 如果是小文件,单线程下载太慢

这时候异步下载就派上用场了,在你请求第一个图片获得数据的时候,它会切换请求第二个图片或其他图片,等第一个图片获得所有数据后再切换回来。从而实现多线程批量下载的功能,速度超快,下载超清大图用这个方法可以一秒一张。

举个代码例子:

你把想要爬取的图片地址放到一个数组里,命名为URL替换掉原文的URL数组,即可实现异步下载了。详细教程与源代码查看:

python 小文件下载、大文件下载、异步批量下载 代码

了解更多

更多有趣的Python教程欢迎关注公众号:Python实用宝典

或者访问网站:Python实用宝典

wordpress每天被24小时都很多ip访问后台,是采集还是恶意攻击?


每天不间断有访问这个文件夹的,很多IP,怎么处理呢,动不动网站就打不开了,求大牛给个解决方法,谢谢!

答:

这样看是无法判断这个IP究竟是在干嘛的。

1. 需要先进入nginx或apache的日志文件,查看当时频繁访问的这个IP的信息。以nginx为例:

cd /var/log/nginx
vim access.log

2. 查看当时这个IP的请求头部

如图可以知道,这个IP是SEMrushBot的爬虫。

如果你不想它访问:

1.如果是搜索引擎,你可以在robots.txt里添加规则让其避开网站。

User-agent:XXXX 
Disallow:/

2.如果是爬虫,禁掉:

新建文件放在nginx的conf目录下面,命名为blocksip.conf:

deny xxx.xxx.xxx.xxx;

保存一下。

在nginx的配置文件nginx.conf中加入:include blocksip.conf;

重启一下nginx的服务:service nginx reload 就可以生效了。

了解更多

更多有趣的教程欢迎关注公众号:Python实用宝典

或者访问网站:Python实用宝典

自己是学食品的,打算利用课余时间学习python,想听一下各路大神对python的看法?

自己是学食品的,打算利用课余时间学习python,想听一下各路大神对python的看法?

答:

如果是把Python当做兴趣和额外技能进行学习,那可是非常好的,比如食品行业可以考虑这样的交叉应用:用深度学习从海量新闻中识别出食品安全新闻,节省大量人力,比如我之前做的一个网站:

极致安食—食品安全资讯

它基于卷积神经网络的原理,自动根据新闻标题分类出食品安全新闻(短文本分类)。其实可以做的内容还有很多,比如说对这些食品安全新闻发生的地点和时间做一次数据分析或数据挖掘看看都有什么特点,这些衍生出来的分析都可以用Python做,而且非常有社会意义。

不过做这样的项目题主要有思想准备,因为这些确实很难产生商业模式,很容易让人失去继续开发下去的动力,域名要钱,服务器也要钱,唯一支持我继续运维这个网站的动力就是把它看做是一个公益项目,如果你希望用Python做出一些有价值的东西,这些都是你需要考虑的。

了解更多

更多有趣的教程欢迎关注公众号:Python实用宝典

http://weixin.qq.com/r/MDiJkcHEsZzOrYXy920i (二维码自动识别)

或者访问网站:Python实用宝典

安装python包时,如果指定包的版本,为什么用到的是两个等号,而不是一个等号?

用anaconda创建虚拟环境时,会用到conda create -n env-name python=3.6,其中-n是什么意思,如果是参数的话,为什么不是–n,还有就是为什么python=3.6是一个等于号,而在安装包时,比如pip install pymysql==0.7时,用到的是两个等于号。

Anaconda中的命令有两种参数类型,一种是简写,比如题主说到的 -n,还有一种是全称 –name,即-n对应的全称。

pip的==是版本匹配运算符,是PEP 440定义的,见这个文档:PEP 440 – 版本标识和依赖性规范

至于conda的create指定版本的时候用Python = 3.5而不是Python == 3.5,个人猜测是第一个包含“模糊”版本,而第二个包含精确版本。模糊版本将匹配版本> = 3.5和<3.6中的Python包。而==将匹配Python包如3.5,3.5.0,3.5.0.0等这样的精确版本。确实没必要细化到那么细的版本号。