python预备知识

python预备知识

目录

一、python简介

1.python的起源
2.python语言的特征
3.编程语言排行榜
4.python应用领域
5.python学习方向

一、python简介

1.python的起源

1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。

在这里插入图片描述

Guido接触并使用过诸如Pascal、C、Fortran等语言。这些语言的基本设计原则是让机器能更快运行。在80年代,虽然IBM和苹果已经掀起了个人电脑浪潮,但这些个人电脑的配置很低。所有的编译器的核心是做优化,以便让程序能够运行。这种编程方式让Guido感到苦恼。

在这里插入图片描述

在这里插入图片描述

Guido希望有一种语言,这种语言既能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。ABC语言让Guido看到希望。ABC是由荷兰的数学和计算机研究所开发的,刚好Guido在该研究所工作,并参与到ABC语言的开发。


于是Guido在1989年,那个无聊的圣诞节假期,开始编写Python语言的编译器。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

在这里插入图片描述

之所以会选择 Python 作为该编程语言的名字,是因为 Guido 是一个叫 Monty Python 戏剧团体的忠实粉丝。

Life is shot, you need Python. 人生苦短,我用Python。

2.python语言的特征

  1. 简单、易学
    Python是一种代表简单主义思想的语言,阅读一段Python程序就像在阅读一篇文章,这使开发者能够专注于解决问题而不是去搞明白语言本身。
    Python有极其简单的语法,如果开发同样的功能,使用其他语言可能需要上百行代码,而Python只需几十行代码就可以轻松搞定。
  2. 免费、开源
    Python 是 FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS 是基于一个团体分享知识的概念。这是为什么 Python 如此优秀的原因之一——它是由一群希望看到一个更加优秀的 Python 的人创造并经常改进着的。
  3. 超级语言
    python是一种超级语言,当你用 Python 语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
  4. 可移植性
    由于它的开源本质,Python 已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有 Python 程序无需修改就可以在下述任何平台上面运行。这些平台包括 Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE 甚至还有 PocketPC、Symbian 以及 Google 基于 Linux 开发的 Android 平台!
  5. 解释性
    一个用编译性语言比如 C 或 C++ 写的程序可以从源文件(即 C 或 C++ 语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。
    而 Python 语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用 Python 更加简单。由于你只需要把你的 Python 程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的 Python 程序更加易于移植。
  6. 面向对象
    Python 既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如 C++ 和 Java 相比,Python 以一种非常强大又简单的方式实现面向对象编程。
  7. 可扩展性
    如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用 C 或 C++ 编写,然后在你的 Python 程序中使用它们。
  8. 丰富的库
    Python 标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV 文件、密码系统、GUI(图形用户界面)、Tk 和其他与系统有关的操作。记住,只要安装了 Python,所有这些功能都是可用的。这被称作 Python 的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如 wxPython、Twisted 和 Python 图像库等等。
  9. 规范的代码
    Python 采用强制缩进的方式使得代码具有极佳的可读性。
  10. 可嵌入性
    用户可以把Python嵌入到C/C++程序,从而向程序提供脚本功能。
  11. 高级动态编程:虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
  • 缺点
  • 运行速度,有速度要求的话,用 C++ 改写关键部分吧。
  • 国内市场较小(国内以 Python 来做主要开发的,目前只有一些 web2.0 公司)。但时间推移,目前很多国内软件公司,尤其是游戏公司,也开始规模使用他。
  • 中文资料匮乏(好的 Python 中文资料屈指可数,现在应该变多了)。托社区的福,有几本优秀的教材已经被翻译了,但入门级教材多,高级内容还是只能看英语版。
  • 构架选择太多(没有像 C# 这样的官方 .net 构架,也没有像 ruby 由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多。

3.编程语言排行榜

在这里插入图片描述

4.python应用领域

  1. 数据采集与处理领域
    使用Urllib/Urllib2/Re模块库实现典型的网络爬虫程序,采集各种结构化和非结构化数据,通过动态代理Proxy自动轮询,突破网站403反爬虫拦截机制。同时使用Scrapy或BS4企业级爬虫框架快速完成网络深维度自动探索采集。
  2. 数据计算与分析领域
    在数据处理方面使用强大的NumPy/SciPy/Pandas模块库实现数据规整化操作标准流程:采集->加载->清洗->转换->重塑;充分利用强大的Pandas模块库实现聚合与分组算法、时间序列算法等核心的数据分析计算;最终使用Matpolitlib模块库进行可视化数据呈现。
  3. 人工智能与机器学习领域
    使用Scikit-Learn模块库实现机器学习,使用AIML人工智能标记语言。掌握Theano/Keras 模块库搭建各种深度学习模型,如自编码、循环神经网络、递归神经网络等。了解Google公司的TensorFlow人工智能系统。
    MASA和Google早期大量使用Python,为Python积累了丰富的科学运算库,当AI时代来临后,Python从众多编程语言中脱颖而出,各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。

4.自动化测试领域
使用Selenium2模块库实现典型的网络模拟点击和虚拟操作,编写测试脚本完成对网站及应用的自动化测试,并进行测试日志存储记录和跟踪。结合相关平台和测试工具形成一整套的自动化测试标准流程和规范。

5.系统集成运维领域
Fabric模块库是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括:命令执行展文件上传题下载及完整执行日志输 出等功能。使用Re模块库对Log日志进行分析和处理。

6.Web互联网领域
Python拥有很多免费数据函数库、免费web网页模板系统、以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Python web框架为Django。从事该领域应从数据、组件、安全等多领域进行学习,从底层了解其工作原理并可驾驭任何业内主流的Web框架。
例如使用Socket模块库实现服务器及客户端编程,实现TCP/UDP的协议下的数据通信操作。利用Diango、Flask框架快速实现网站开发,了解web服务器端框架Tornado在实际开发中的应用。

  1. 网络编程
    网络编程是Python学习的另一方向,网络编程在生活和开发中无处不在,哪里有通讯就有网络,它可以称为是一切开发的“基石”。对于所有编程开发人员必须要知其然并知其所以然,所以网络部分将从协议、封包、解包等底层进行深入剖析。

  2. 爬虫开发
    在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。

  3. 云计算开发
    Python是从事云计算工作需要掌握的一门编程语言,目前很火的云计算框架OpenStack就是由Python开发的,如果想要深入学习并进行二次开发,就需要具备Python的技能。

  4. 自动化运维
    Python是一门综合性的语言,能满足绝大部分自动化运维需求,前端和后端都可以做,从事该领域,应从设计层面、框架选择、灵活性、扩展性、故障处理、以及如何优化等层面进行学习。

  5. 金融分析
    金融分析包含金融知识和Python相关模块的学习,学习内容囊括Numpy\Pandas\Scipy数据分析模块等,以及常见金融分析策略如“双均线”、“周规则交易”、“羊驼策略”、“Dual Thrust 交易策略”等。

  6. 科学运算
    Python是一门很适合做科学计算的编程语言,97年开始,NASA就大量使用Python进行各种复杂的科学运算,随着NumPy、SciPy、Matplotlib、Enthought librarys等众多程序库的开发,使得Python越来越适合做科学计算、绘制高质量的2D和3D图像。

  7. 游戏开发
    在网络游戏开发中,Python也有很多应用,相比于Lua or C++,Python比Lua有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,Python非常适合编写1万行以上的项目,而且能够很好的把网游项目的规模控制在10万行代码以内。

  8. 桌面软件
    Python在图形界面开发上很强大,可以用tkinter/PyQT框架开发各种桌面软件!

5.python学习方向

学习方向

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值