Python是真的火,还是炒得火?

2020-03-30 14:55发布

3条回答
曾为
2楼 · 2020-05-21 22:28

是真的火,他是人工智能的基础性语言


卡卡
3楼 · 2020-11-11 11:50





@Author:BYRunsen

1、Python的前世和发展

Python的前世

1989年圣诞节前夕,山雨欲来风满楼,计算机程序设计语言界隐隐有大事要发生,果然不出所料。江湖人称龟叔(GuidovonRossum),就是这位祖籍荷兰的大牛,在圣诞节百无聊赖的期间,发明了Python。


之所以选中Python作为程序的名字,是因为龟叔是BBC电视剧——蒙提·派森的飞行马戏团(MontyPython’sFlyingCircus)的爱好者。ABC是由参加设计的一种教学语言。就龟叔本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。

但是由于ABC语言并没有成功,究其原因,龟叔认为是非开放造成的。龟叔决心在Python中避免这一错误,并获取了非常好的效果,完美结合了C和其他一些语言。

就这样,Python在龟叔手中诞生了。那时,龟叔还在荷兰的CWI(CentrumvoorWiskundeenInformatica,国家数学和计算机科学研究院)。龟叔给Python的定位是“优雅”、“明确”、“简单”

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

实际上,Python第一个实现是在Mac计算机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响,并且结合了Unixshell和C的习惯。

1991年初,Python发布了第一个公开发行版。

2000年10月16日,Python2.0版本发布,增加了实现完整的垃圾回收,并且支持Unicode。同时,整个开发过程更加透明,社群对开发进度的影响逐渐扩大。

2008年12月3日,Python3.0版本发布,此版不完全兼容之前的Python源代码。不过,很多新特性后来也被移植到旧的Python2.6,2.7版本

Python的特性


(1)简单易学:Python极其容易上手,因为Python有极其简单的说明文档。

(2)免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。

(3)高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

(4)可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、PalmOS、QNX、VMS、Psion、AcomRISCOS、VxWorks、PlayStation、SharpZaurus、WindowsCE、PocketPC、Symbian以及Google基于linux开发的android平台。

(5)丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)

上面介绍了Python的优点,其实python的也有缺点

(1)运行较慢:相较于c,c++,Java编译型语言,python、javascript解释型语言不是编译成机器码,而是编译成中间码。Python在解释器而不是编译器的帮助下执行,这将导致它变慢,因为编译和执行有助于它正常工作。

因为Python在定义变量或函数时不会声明类型,即使在编译为pyc字节码后变量的类型以及函数返回类型都是未知的,通过上下文推算出实际的类型,是需要占用内存消耗的。比如a+b先要通过复杂的上下文推荐得出a和b的实际类型,进而再转换为对应的机器指令,不像其他强类型语言,比如java,所有数据类型在编译为class文件时都已经确定了,不需要额外耗时去做类型推算。

(2)性能差:Python的开箱即用的性能速度依然落后于其他语言,比如说具有同样简单语法的Nim和Julia,却可以被编译为机器代码,具有更高的性能优势。

比如,著名的知乎推荐系统用Go替代Python,随着业务发展,发现Python作为动态解释型语言,较低的运行效率和较高的后期维护成本带来的问题逐渐暴露出来:

运行效率较低。知乎目前机房机柜空间已经不足,按照目前的用户和流量增长速度,可预见将在短期内服务器资源告急(针对这一点,知乎正在由单机房架构升级为异地多活架构);Python过于灵活的语言特性,导致多人协作和项目维护成本较高

毕竟Python是通用型,高级的动态编程语言。强调的是codereadability,它的句法使得程序员能够比在C++或者java的静态编程语言相比,编写更少的代码行数。

下面介绍一些的Python常用高级特性

(1)lambda

lambda函数可以使用任意数量的参数,但必须始终只有一个表达式,我们这样做是因为lambda函数的目的是执行某种简单的表达式或操作,而无需完全使用def定义函数。

In[1]:x=lambdaa,b:a*b


In[2]:x(2,3)

Out[2]:6


我们执行了一些基本的数学运算,而无需定义完整的函数。这是Python的众多功能之一,使其成为一种简洁易用的编程语言。

(2)Map

Map函数是一个内置的Python函数,用于将函数应用于像列表或字典这样的元素序列。这是执行此类操作的非常干净且最重要的可读方式。map不改变原list,而是返回一个新list

In[3]:list(map(lambdax:x*x,(1,2,3)))

Out[3]:[1,4,9]


(3)列表循环

列表解析式(Listcomprehension)或者称为列表推导式,是Python中非常强大和优雅的方法。它可以基于现有的列表做一些操作,从而快速创建新列表。

In[4]:a,*b,c,d=list(range(10))


In[5]:a

Out[5]:0


In[6]:b

Out[6]:[1,2,3,4,5,6,7]


In[7]:c

Out[7]:8


In[8]:d

Out[8]:9


In[9]:[x*xforxinrange(5)ifx%2!=0]

Out[9]:[1,9]


(4)生成器

通过列表⽣成式,我们可以直接创建⼀个列表。但是,受到内存限制,列表容量肯定是有限的。

在Python中,这种⼀边循环⼀边计算的机制,称为⽣成器:generator。这样就不必创建完整的list,从⽽节省⼤量的空间。

In[10]:a=(iforiinrange(5))


In[11]:a

Out[12]:at0x0000023269845750>


In[13]:next(a)

Out[13]:0


In[14]:next(a)

Out[14]:1


Python发展

进入2020年3月,新的编程语言排行榜新鲜出炉,TIOBE最新发布了3月编程语言排行榜。


从榜单中我们可以看到,前三名分别为Java、C、Python。相较于上个月,Python继续以1.85%上升至10.11%,以10.11%的份额稳居第三。

Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web等。

不可否认,Python确实是这个时代最流行、也必须要掌握的编程语言。Python可以运用在数据处理、Web开发、人工智能等多个领域,它的语言简洁、开发效率高、可移植性强,并且可以和其他编程语言(比如C++)轻松无缝衔接。现如今,不少学校的文科生甚至中学生也开设了此课程,可见其重要程度。

Python职业发展方向

(1)网络爬虫

Python较为常用的情况就是网络爬虫,最早使用Python进行网络爬虫的是Google,而Python也因此被带动发展起来。

Python在这个方面有许多工具上的积累,例如,用于模拟HTTP请求的Requests、用于HTMLDOM解析的PyQuery/BeautifulSoup、用于自动化分布式爬取任务的Scrapy,都使得Python成为数据爬取的首选语言之一。Python同时特别擅于分析与计算爬取后的数据。

(2)Linux运维

用python实现的测试工具及过程,包含服务器端、客户端、web、andriod、client端的自动化测试,自动化性能测试的执行、监控和分析,常用seleniumappium等框架。

(3)PythonWeb网站工程师

我们都知道Web一直都是不可忽视的存在,我们离不开网络,离不开Web,利用Python的框架,Django,flask可以做网站,而且都是一些精美的前端界面,还有我们需要掌握一些数据的应用。

(4)Python自动化测试

大家都知道,就是Python语言对测试的帮助是非常大的,自动化测试中Python语言的用途很广,可以说Python太强大,掌握和熟悉自动化的流程,方法和我们总使用的各个模板,到现在为止,我了解的Python使用最多的应该是自动化测试。

(5)数据分析

我们都知道现在来临了大数据的时代,数据可以说明一切问题的原因,现在很多做数据分析的不是原来那么简单,Python语言成为了做数据分析师的第一首选,它同时可以给工作带来很大的效率。

(6)人工智能

人工智能是现在大火的一个方向,这让Python语言的未来充满了无限的潜力。机器学习,特别是当前热门的深度学习中的大部分工具框架都提供了Python接口,因为Python的简洁清晰的语法是深受开发者喜爱的。


本文已收录GitHub,传送门~,里面更有大厂面试完整考点,欢迎Star。



猫的想法不敢猜
4楼 · 2021-09-26 16:35

我觉得火不火得的没那么重要,只要学习能找到工作,能养活自己就好了

相关问题推荐

  • 什么是Python列表2020-12-03 10:47
    回答 20

    在python中列表(list)是使用最频繁的数据类型,在其他语言中通常叫做数组。列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。...

  • 回答 16

    简单来讲,爬虫就是一个探测机器,它的基本操作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。就像一只虫子在一幢楼里不知疲倦地爬来爬去。...

  • 回答 17

    因为Python可以做数据分析  数据挖掘,数据挖掘的话简单来说就是爬虫工程师

  • 回答 13

    1)学习爬虫,可以私人订制一个搜索引擎,并且可以对搜索引擎的数据采集工作原理进行更深层次地理解。有的朋友希望能够深层次地了解搜索引擎的爬虫工作原理,或者希望自己能够开发出一款私人搜索引擎,那么此时,学习爬虫是非常有必要的。简单来说,我们学会了...

  • 回答 4

    大部分数据都是可以爬的,不过有些网站对数据的加密做的非常好,在解析的过程中要消耗很长的时间。

  • 爬虫是什么?2020-08-26 10:11
    回答 10

    抓取数据,进行统计和分析

  • 成都爬虫好找工作吗2020-10-14 10:23
    回答 12

    在成都找网络爬虫工作也是可以的,自己可以先到招聘软件上看看当地招聘的需求量以及薪资待遇水平怎么样,要是能达到自己的预期效果可以在当地工作,要不可以到北上广深找工作,就业机会能更多些。...

  • 回答 9

    两种方式,一种是MySQL自带的命令行窗口,一种是图形用户管理工具,前者类似于一个cmd窗口,日常管理维护数据库不是很方便,后者就是一个图形用户管理软件,种类繁多,使用起来也相对容易一些...

  • 回答 4

    不可以所有编程最起码都得学函数,分支,循环之后才可以编写代码

  • 回答 2

    一台主机  多台从机

  • 回答 3

    一、分布式爬虫架构在了解分布式爬虫架构之前,首先回顾一下Scrapy的架构,如下图所示。Scrapy单机爬虫中有一个本地爬取队列Queue,这个队列是利用deque模块实现的。如果新的Request生成就会放到队列里面,随后Request被Scheduler调度。之后,Request交给Down...

  • 回答 7

    代理ip网址http://www.goubanjia.com/http://www.ip181.com/https://www.kuaidaili.com/python 环境安装requests库安装bs4库proxies设置代理服务器地址proxies = {'http':  'http://61.155.164.110:3128'}http://www.goub......

  • 回答 2

    import  requestsimport  jsonfrom bs4 import BeautifulSoupfrom    urllib.request import urlretrieve#构造函数def sk():    #请求头    header={        'user-Agent':'Mozilla/5.0 (Windows NT 10.0; W...

  • 回答 3

    针对字符串中本身含有双引号,我们可以利用单引号进行字符串的定义来解决这个问题。使用单引号作为字符串的界限就不会引起识别异常问题,保证字符串的合理定义

  • 回答 2

    要用unicode编码来替换。

没有解决我的问题,去提问