Python 介绍

  1. python 发展简史
    Python 起源(1989-1991) Python的诞生可以追溯到1989年,当时Guido van Rossum在荷兰国家数学和计算机科学研究所工作时,出于对当时编程语言的不满,开始构思一种新的编程语言。他希望这种语言能够弥补C语言在异常处理和分布式操作系统支持方面的不足。Python 初始阶段(1991-2000): Python 1.0于1994年发布,引入了lambda表达式、map、filter和reduce等函数式编程工具。Python 1.6于2000年发布,是Python 1.x系列的最后一个版本。在这个阶段主要实现了基本的语法结构、数据类型、异常处理、模块系统等特性。Python 成熟阶段(2000年至2020年): Python 2.0于2000年发布,引入了循环引用检测垃圾回收机制和全局解释器锁(GIL)。Python 2.4于2004年发布,同年Django框架诞生。Python 2.7于2010年发布,是Python 2.x系列的最后一个版本。Python 2.7原定于2015年结束支持,后延长至2020年,并确认不会有2.8版本发布。在这个阶段主要增加了许多新功能和改进,如Unicode支持、列表推导、垃圾回收机制、生成器、装饰器、迭代器协议、新式类等Python 3的诞生与挑战(2008-至今) 2008年,Python 3.0发布,这是Python历史上的一个重要里程碑。Python 3旨在解决Python 2中的一些设计缺陷,例如在处理整数和长整数时的不一致性。然而,由于Python 3与Python 2在语法和库兼容性上存在差异,这导致了社区的分裂,许多开发者和组织在迁移到Python 3上犹豫不决。尽管如此,Python 3的推广仍在稳步进行,Python 2的官方支持已于2020年结束,Python 3成为唯一的官方支持版本。以下是Python 发展的历史图表:1989年:Guido van Rossum开始编写Python语言的实现。他的目标是创建一种易于阅读、易于理解和易于学习的编程语言。1991年:Python的第一个公开发布版本(0.9.0)发布。1994年:Python 1.0发布。这是第一个真正稳定的版本,并且引入了重要的特性,如模块和异常处理机制。2000年:Python 2.0发布。这个版本引入了重要的新特性,如列表推导式和垃圾回收机制的改进。2001年:Python软件基金会(Python Software Foundation,简称PSF)成立,旨在促进Python语言的开发和推广。2008年:Python 3.0发布。这个版本引入了许多不兼容的改动,以清理和改进语言的设计。2010年:Python 2.7发布。这是Python 2.x系列的最后一个版本,主要是为了给用户更多时间来迁移到Python 3.2015年:Python 3.4发布。这个版本引入了许多新特性,如异步编程和新的模块。2017年:Python 3.6发布。这个版本引入了许多新特性,如格式化字符串字面值和异步生成器。2018年:Python 3.7发布。这个版本引入了许多新特性,如数据类和上下文变量。2019年:Python 3.8发布。这个版本引入了许多新特性,如海象运算符和可调用的类型提示。2020年:Python 3.9发布。这个版本引入了许多新特性,如字典合并运算符和更好的类型提示支持。2021年:Python 3.10发布。这个版本引入了许多新特性,如模式匹配和更好的错误提示。

  2. Python的特点易读性与简洁性 Python的设计哲学强调代码的可读性,其语法清晰、结构简单,使得代码像英语句子一样易于理解。这种简洁性不仅使得新手容易上手,也使得资深开发者能够快速编写和维护代码。广泛的标准库 Python拥有一个庞大的标准库,提供了各种模块和函数,从文件操作到网络通信,从数据库接口到图形用户界面,几乎涵盖了编程的各个方面。这使得Python能够轻松应对各种编程任务。跨平台兼容性 Python可以在多种操作系统上运行,包括Windows、Linux和macOS,这使得Python成为跨平台应用开发的理想选择。动态类型与自动内存管理 Python是一种动态类型语言,这意味着开发者在编写代码时不需要声明变量的类型。此外,Python还提供了自动垃圾回收机制,这简化了内存管理,减少了内存泄漏的风险。强大的社区支持 Python拥有一个活跃的开发者社区,社区成员贡献了大量的第三方库和框架,如Django、Flask、NumPy、Pandas和TensorFlow等,这些工具极大地扩展了Python的应用范围。多范式编程 Python支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。这使得开发者可以根据问题的特点选择最合适的编程风格。应用领域 Python在数据科学、机器学习、网络开发、自动化、科学计算和教育等领域都有广泛的应用。它的灵活性和易用性使其成为初学者和专业开发者的首选语言。

  3. Python的应用方向常规软件开发:Python支持函数式编程和OOP面向对象编程,能够承担任何种类软件的开发工作,因此常规的软件开发、脚本编写、网络编程等都属于标配能力。科学计算:随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛,有更多的程序库的支持。虽然Matlab中的许多高级功能和toolbox目前还是无法替代的,不过在日常的科研开发之中仍然有很多的工作是可以用Python代劳的。自动化运维:这几乎是Python应用的自留地,作为运维工程师首选的编程语言,Python在自动化运维方面已经深入人心,比如Saltstack和Ansible都是大名鼎鼎的自动化平台。云计算:开源云计算解决方案OpenStack就是基于Python开发的,搞云计算的同学都懂的。WEB开发:基于Python的Web开发框架不要太多,比如耳熟能详的Django,还有Tornado,Flask。其中的Python+Django架构,应用范围非常广,开发速度非常快,学习门槛也很低,能够帮助你快速的搭建起可用的WEB服务。网络爬虫: 也称网络蜘蛛,是大数据行业获取数据的核心工具。没有网络爬虫自动地、不分昼夜地、高智能地在互联网上爬取免费的数据,那些大数据相关的公司恐怕要少四分之三。能够编写网络爬虫的编程语言有不少,但Python绝对是其中的主流之一,其Scripy爬虫框架应用非常广泛。数据分析:在大量数据的基础上,结合科学计算、机器学习等技术,对数据进行清洗、去重、规格化和针对性的分析是大数据行业的基石。Python是数据分析的主流语言之一。人工智能:Python在人工智能大范畴领域内的机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用。当然,除了以上的主流和前沿领域,Python还在其他传统或特殊行业起着重要的作用。

  4. Python的使用者说了这么多先进的当下最前沿的Python技术方向,那么有哪些公司在使用Python呢?在国内最有名的就是知乎和豆瓣了,它们就是基于Python开发的Web服务。其它的例如百度、阿里、淘宝 、搜狐、金山、腾讯、盛大、网易、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务,几乎所有的互联网企业都在招聘Python程序员。在国外,更是数不胜数。谷歌的Google App Engine 、http://code.google.com[https://link.zhihu.com/?target=http%3A//code.google.com] 、Google earth 、谷歌爬虫、广告等项目都在大量使用Python进行开发。还有Facebook、Twitter等等等等。几乎所有的Linux发行版都内置Python解释器。

  5. Python的缺点我们光说了Python的优点,也得说说它的缺点。任何编程语言都有缺点,Python也不例外。第一个缺点就是运行速度相对慢点,和C程序相比慢不少,这是解释型语言的通病,你的Python代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以会变慢。而C程序作为编译型语言是运行前直接编译成CPU能执行的机器码,所以非常快。(但同时你可以这么理解,C语言把费时间的活在生产上线之前先花时间干了,所以运行时就快了。)但是Python的慢,没有你想象中的那么严重那么重要,因为:程序速度不再那么重要,不一定非要追求极致:前面其实我们已经提到过,早些时期CPU比较昂贵,计算资源很吃紧,内存也很贵,程序运行的速度和耗费的时间就很重要。这就是导致计算机科学致力于研究不同算法的效率的原因之一。然而,这已经不再是最重要的因素,因为现在芯片很便宜,而且运行速度有了质的提升。运行时间不再是你最贵的资源。公司最贵的资源现在是员工时间。或者换句话说,就是你。在规定时间内把事情做完比把程序变快更加重要。Python语法简洁,包含大量的标准库和第三方库,用较少的语句就可以完成其它语言上百条语句才能完成的任务,这无疑大大提高了开发的速度和效率,帮助你在尽可能短的时间内完成工作。这里并不是说速度一点也不重要,只是说速度不再是唯一重要的东西和唯一考虑的东西。 现在,产品的研发速度远比程序运行速度更重要。在一天结束时,让你的公司存活下来或者死去的唯一事物就是产品上市时间。公司能够存活下来的唯一方法就是比你的竞争对手更快地创新。如果在你的产品上市之前,你的竞争对手已经提前上市了,那么你想出了多少好的主意也将不再重要。在整个体系中有比Python程序运行得更慢的瓶颈:如果你在写一个网络应用程序,如web服务,很有可能的情况是,CPU时间并不是你的程序的瓶颈。当你的web服务器处理一个请求时,可能会进行几次网络调用,例如到数据库,或者像Redis这样的缓存服务器。虽然这些服务本身可能比较快速,但是对它们的网络调用却很慢。如果一个单独的CPU周期等同于1秒,那么一个从北京到上海的网络调用将相当于1年。可见网络调用是多么的慢。这说明什么呢?说明Python不是系统中最慢的那个部分,有比它慢数量级的运行瓶颈卡在系统中间,制约着整个系统的运行速度。哦那- 但无论怎么样,Python慢是事实。如果你真的对提高Python运行速度有需求,你可以使用C来写,然后在Python中调用它。另外,程序员大牛Donald Knuth说过过早优化是万恶之源。在开发的中早期,追求运行速度和效率是费力不讨好的,进行敏捷开发和快速迭代才是当下软件开发的王道模式,而Python正是为此而生。第二个问题就是GIL(Global Interpreter Lock)全局解释器锁,这是一种防止多线程并发执行机器码的互斥锁,功能和性能之间权衡后的产物。这是在设计Python语言的时候留下的一个历史性遗留问题,也是限于当时技术团队实力有限。具体的技术细节先不解释,其造成的后果就是Python在进行多线程任务的时候,其实是伪多线程,性能较差,这一点一直被诟病,大家随便在某个技术论坛里都能找到对这个问题的激烈讨论。Python的这个问题事实存在,一段时间内也是无法解决的,为什么呢?这需要从底层重新设计Python,难度之大,工作量之大,对现有生态圈的影响非常巨大。那么有什么解决办法?使用非官方的PyPy解释器或者协程机制。第三个不是缺点的问题是Python2和Python3的不兼容性。

  6. Python之禅最后,让我们以Python的官方格言,也就是俗称的Python之禅来结束对Python的介绍。在Python的IDLE或者交互式解释器中,输入import this,你就会看到下面的一段话:The Zen of Python, by Tim PetersBeautiful is better than ugly.Explicit is better than implicit.Simple is better than Complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases aren’t special enough to break the rules.Although practicality beats purity.Errors should never pass silently.Unless explicitly silenced.In the face of ambiguity, refuse the temptation to guess.There should be one-- and preferably only one --obvious way to do it.Although that way may not be obvious at first unless you’re Dutch.Now is better than never.Although never is often better than right now.If the implementation is hard to explain, it’s a bad idea.If the implementation is easy to explain, it may be a good idea.Namespaces are one honking great idea – let’s do more of those!翻译过来的意思就是:优美胜于丑陋(Python 以编写优美的代码为目标)明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)可读性很重要(优美的代码是可读的)即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)当存在多种可能,不要尝试去猜测而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)如果你深入理解并实践了以上的精神,可以肯定的是你的代码水平会得到极大的提高!

  7. python 程序运行机制高级编程语言按程序执行方式可以分为编译型语言和解释型语言两种, pyhon 是一门解释型的编程语言,他具有解释型语言天生具有跨平台的能力, 只要为python提供相应平台的解释器即可运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】使用 Pandas 统计每行数据中的空值

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 🎵 邓紫棋《光年之外》 在数据分析…

传感器的基本特性

传感器的基本特性主要包括以下几个方面: 静态特性:这是指传感器在被测量的各个值处于稳定状态时的输入和输出关系。传感器的静态特性可以用一些静态性能指标来衡量,主要包括线性度、灵敏度、迟滞、重复性、漂移和分辨力等。其中,线…

Python 网络爬虫:深入解析 Scrapy

大家好,在当今数字化时代,获取和分析网络数据是许多项目的关键步骤。从市场竞争情报到学术研究,网络数据的重要性越来越被人们所认识和重视。然而,手动获取和处理大量的网络数据是一项繁琐且耗时的任务。幸运的是,Pyth…

vue3 todolist 简单例子

vue3 简单的TodList 地址: https://gitee.com/cheng_yong_xu/vue3-composition-api-todo-app-my 效果 step-1 初始化项项目 我们不采用vue cli 搭建项目 直接将上图文件夹,复制到vscode编辑器,清空App.vue的内容 安装包 # 安装包 npm…

云原生架构案例分析_2.云原生技术助力某汽车公司数字化转型实践

名词解释: 互联网 在“互联网”模式下,我们仅仅把互联网看作是一种传播工具、传播手段、传播渠道和传播平台,对于互联网的应用大体上是在既有的运作逻辑的基础之上,把互联网作为延伸传媒影响力、价值和功能的一种延伸型工具&…

Linux基础1-基本指令1

1.Linux学习前言 Linux的学习非常重要,我们学习Linux的第一步是在电脑中搭建Linux环境。 对于没有搭建过的可以看这阿伟t的一篇文章 【Linux入门】Linux环境配置-CSDN博客 我的环境为XShell,运行的云服务器是阿里云 2.本章重点 1.显示当前目录下的所有文件…

iperf

文章目录 1.安装1.1在 Ubuntu 上安装1.2在 CentOS 上安装 2.iperf服务端选项3.iperf客户端选项4.iperf常用命令5.结果展示5.1 tcp结果展示5.2 udp结果展示 Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供…

针对大模型的上下文注入攻击

大型语言模型(LLMs)的开发和部署取得了显著进展。例如ChatGPT和Llama-2这样的LLMs,利用庞大的数据集和Transformer架构,能够产生连贯性、上下文准确性甚至具有创造性的文本。LLMs最初和本质上是为静态场景设计的,即输入…

asio之winsock的初始化

简介 asio中,winsock初始化工作是放在winsock_init类中来处理的 类结构 #mermaid-svg-aC4x3cdr8TKGhsnX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aC4x3cdr8TKGhsnX .error-icon{fill:#552222;}#…

Xilinx RFSOC 47DR 8收8发 信号处理板卡

系统资源如图所示:  FPGA采用XCZU47DR 1156芯片,PS端搭载一组64Bit DDR4,容量为4GB,最高支持速率:2400MT/s;  PS端挂载两片QSPI X4 FLASH;  PS支持一路NVME存储;  PS端挂载SD接口,用于存储程序&…

解决kettle界面右上角的connect消失——且使用admin登录不上Kettle资源库

一、问题描述 1.1、Kettle界面右上角的connect消失了 当我们配置Kettle界面的资源库(Other Repositories)内容后,Kettle界面右上角的connect消失了;如下图所示: 1.2、使用默认的账户【admin】和密码【admin】登录不上kettle资源库 当我们切换到我们配置的数据库使用超管账…

uniapp实现微信小程序调用云函数【vue3】

本人是从微信开发者工具写原生微信小程序一步一步走来,由于vue3框架的慢慢的步入前端市场,为了不被前端市场遗弃,果断从vue2开始步入vue3的学习,本人习惯在在HBuilder X写uniapp的项目,过去uniapp默认vue2框架&#xf…

注册北京个体工商户条件和办理时间

在北京这座充满活力的城市中,每天都有无数的创业者怀揣着梦想,踏上创业之路。然而,对于许多初次接触企业注册的人来说,往往对注册流程和时间感到困惑。特别是选择代理服务时,更希望了解一个大概的时间范围。那么&#…

WHAT - 容器化系列(二)- docker

目录 一、前言二、Docker镜像:可运行软件包三、Docker容器:可执行环境四、容器和镜像的关系五、创建镜像的过程5.1 编写Dockerfile5.2 构建Docker镜像5.3 查看构建的镜像5.4 运行Docker容器5.5 验证容器运行状态5.6 推送镜像到镜像仓库(可选&…

【案例实操】银河麒麟桌面操作系统实例分享,V10SP1重启后网卡错乱解决方法

1.问题现象 8 个网口, 命名从 eth1 开始到 eth8。 目前在系统 grub 里面加了 net.ifnames0 biosdevname0 参数, 然后在 udev 规则中加了一条固定网卡和硬件 pci 设备号的规则文件。 最后在 rc.local 中加了两条重新安装网卡驱动的命令( rmmod…

Spring 中如何控制 Bean 的加载顺序?

如果你脱口而出说添加 Order 注解或者是实现 Ordered 接口,那么恭喜,你掉坑了。 一 Order 注解和 Ordered 接口 在 Spring 框架中,Order 是一个非常实用的元注解,它位于 spring-core 包下,主要用于控制某些特定上下文…

【模型参数微调】最先进的参数高效微调 (PEFT) 方法

简介 由于大型预训练模型的规模,微调大型预训练模型的成本通常高得令人望而却步。参数高效微调 (PEFT) 方法只需微调少量(额外)模型参数而不是所有模型参数,即可使大型预训练模型有效地适应各种下游应用。这大大降低了计算和存储成本。最近最先进的PEFT技术实现了与完全…

git基本使用——回退,撤销add,commit,合并分支

学习笔记 笔记中表格中的—— 表示需要回退的地方,也就是使用命令之后会改变的地方 网页软件分享 这是一个非常好用web端笔记画图软件,解决了typora画图不方便的问题

TOP10-k8s-安全措施

TOP 1、镜像安全 镜像中存在什么? 镜像中存在打包后的code以及base image、tools 安全建议: 1、代码中非必须不使用任何多余的tools或者库。 2、尽量使用小而精且签名的base image. 3、推送到私有仓库前扫描 docker image.(可以集成在CI/CD的流水线中) 4…

模板-初阶

引言: 在C,我们已经学过了函数重载,这使得同名函数具有多个功能。但是还有一种更省力的方法:采用模板。 本文主要介绍以下内容 1. 泛型编程 2. 函数模板 3. 类模板 1.泛型编程 在将这一部分之前,通过一个故事引…