关于python的困惑

不知道你有有没有这种感受:不知道从什么时候开始Python就刷屏了,到处可以看见关于Python语言占据使用排行榜第一的位置的文章;Python、pip、anaconda、conda、numpy、scipy、sklearn…各种长得奇形怪状的英语单词出现在你的眼前,让你不知所措;我能用python做什么?我为什么要用python?希望本文可以解决你心中的困惑!

为什么是Python?

荷兰籍Guido van Rossum是Python语言的创始人,如果你查一下Python的中文翻译,你会得到蟒蛇的解释,这个名字来源于Guido本人非常喜爱的一部在20世纪60-70年代播放的室内情景幽默剧Monty Python’s Flying Circus。
任何一门语言的产生必然有其特定的历史背景,这与作者的历史经历密切相关。但是作者为什么开发Python这门语言不得而知,但是如果你用过Python的话,你肯定知道Python隐藏着一首诗。
The Zen of Python, by Tim Peters1
《Python 之禅》 by 提姆·彼特

Beautiful 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的lib目录下this.py中找到,也可以通过解释器中输入 import this得到。从中我们可以得到Python的很多设计哲学:简洁,明确,优美等。这首诗只有经过不断的实践和不断的理解才能顿悟!

但总体来说,Python之所以这么受欢迎主要有以下几个方面:

  1. Python的语法简洁,注重可读性,用Python编写的代码和自然语言很相似,便于理解、维护和使用。
  2. Python可以使用非常短的代码来实现C语言等通过复杂编码才能实现的任务,其代码量往往只有C++或者Java代码的1/5~1/3。
  3. Python是一门动态的解释性语言,动态意味着不需要复杂的类型声明;解释性意味着它不需要经过编译和连接等步骤,而是一行一行的逐步处理,便于交互和调试代码,可以大大提高效率。
  4. Python是免费、开源和跨平台的,这意味着Python程序不需要任何改变就可以应用在不同的计算机平台,比如Windows或者Linux。
  5. Python形成了庞大的开源生态,其社区提供了丰富的第三方程序库,可以大大提高开发效率。另外,很多注明的公司也都开放了Python的应用程序接口,用户只需要拿来使用即可。
  6. Python是一种面向对象的高级语言。它包含高级的数据结构,比如列表和字典等,这样就减少了以前框架开发所需的时间,而C语言并没有这样的标准库,所以需要重复的实现相同的功能,过程混乱且容易出现错误。C++虽然使用标准模板库改进了这种情况,但是其标准模板库很难与Python内建的列表和字典的简洁和易读相提并论。它又是面向对象的,在Python中,一切皆对象。它的类模块支持多态、操作符重载和多重继承等高级概念,语法简洁,易于使用。
  7. Python被称为“胶水语言”,这意味着Python程序能够以很多方式轻易地与其他语言编写的组件“粘结”在于一起。Python可以与C或C++语言通过API的形式混合起来,这样Python可以与其他语言互相混合使用,可以各自发挥优势。比如处于开发速度的考虑,Python可以作为一个很好的快速原型工具,然后转移至C,根据不同时期性能的需要逐渐实现系统。2

奇怪的英文单词

你可能见过pip、PyPI、PyPA、anaconda等,也可能见过Numpy、Scipy、PIL、PyQt、Scikitlearn等英文单词。前者是与Python的安装和包管理有关的,而后面的则是具体的不同用途的包。

PyPA(The Python Packaging Authority )是一个工作组,它负责维护Python包中的许多相关项目。
PyPI(Python Package Index)是Python的软件库,它可以帮助你找到Python社区中相关的软件包,也可以帮你发行软件包到Python社区。
pip,发音[pɪp],是Python的包管理工具,你需要用它来实现包的安装、更新等。当你从Python.org中下载安装了Python之后,pip就自动安装了,只需要升级pip即可。
总的来说,只需要直接打交道的是pip,他来负责维护你所需要的工具包。而PyPA和 PyPI则类似于某些管理委员会的角色,作为浅层用户来说我们没必要关心他们的作用。

当你用pip一段时间后可能发现,pip管理包还是挺麻烦的,那么有没有一个平台可以帮我们管理这些包呢?Anaconda就是做这个的。
anaconda是一种开源的,易安装的高性能python和R发行版,它集成了conda包和环境管理工具,并且有1000+免费社区支持的开源包。许多科学包要求python的特定版本才能运行,并且它很难使各种包交互。很难保持更新。anaconda发行版可以快速简单的获取和更新这些包

miniconda是没有1000+开源包的发行版,使用miniconda你只能使用conda命令安装你想用的包。

conda是Anaconda中的软件包管理工具。 Anaconda 是Continuum Analytics的一个发行版,专门针对科学界,尤其是在二进制扩展安装通常很困难的Windows上。Conda是一个完全独立的工具。Conda不从PyPI安装软件包,只能从官方的Continuum存储库或anaconda.org(用户提供的conda软件包的地方)或本地(例如内联网)软件包服务器进行安装。 但是请注意,可以将pip安装到并且与conda一起工作来管理来自PyPI的分发。
从这里我们可以知道,anaconda是一个平台,而conda是anaconda的包和环境管理工具。

Python的包

python的官方文档可以看到,模块概念的引入是为了方便代码复用,提高代码的可维护性的。如果程序越写越长,那么程序的可读性就会越来越差,程序的 层次结构也会越来越不清晰。这时,我们可以把一个较长的程序分成很多容易维护的小文件,其类似于c语言中.h文件和.c文件的作用。而的概念的引入是为了更方便的组织各个模块,防止相同名称的模块发生冲突,类似于c#或c++中的命名空间的作用。比如,两个不同包PA和PB都有同一个名字为M的模块,那么PA.M就表示PA包下面的模块M,PB.M就表示PB包下面的模块M。
通过开源社区分享的包,我们可以理所当然,理直气壮的当一个“拿来主义”者,站在巨人的肩膀上做自己的事情。这些包实现了许多功能,相当于为用户搭建好了基础设施,用户只需要导入这些包,就可以直接使用其中的功能。

学习资源

  1. 强烈推荐廖雪峰的官方网站,这真是小白的福音,不管是python2还是python3。里面的内容通俗易懂,按照廖雪峰的话说就是

    中文,免费,零起点,完整示例,基于最新的Python 3版本。

  2. 知乎-Python 有哪些好的学习资料或者博客?,这里面有很多牛人提供了各种资源和链接

  3. python官方文档,当然官方的最权威,里面很多内容讲的很详细,如果你能全部看懂,说明你的英语不错!不过建议可以先看廖雪峰的教程,然后在查官方文档,这样有了这个基础可能看的更简单一些。

结论

当然,有这么多资源并不能保证你能学会。毕竟,只有真真正的去学你才能真真正正的学会,否则,收集了这么多资源也没什么用。其实,很多人有这种通病,有时候心血来潮,想学某个东西,网上下了一大堆资料,百度网盘存了一大堆资源,结果也只是放在那里堆灰尘而已,甚至某天发现自己有这么多资源的时候还很惊讶!
说了那么多,其实,最重要的是去做,去行动,去实践


  1. https://blog.csdn.net/gzlaiyonghao/article/details/2151918
  2. 徐光侠,常光辉,解邵词等. Python程序设计案例教程. 北京:人民邮电出版社出版, 2017. 4~9
  • 13
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值