0. 前言
最近在从头梳理Python的相关知识,有助于以后更好地学习新知识。这篇博客,我简单介绍一下Python语言的有关内容。
1. Python介绍
Python的创始人为荷兰人吉多·范罗苏姆(Guido van Rossum)。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森干的飞行马戏团》(Monty Python’s Flying Circus)。[百度百科]
Python是一种面向对象的、解释型、动态数据类型程序设计语言,但它也是一种强类型语言。
-
面向对象:一种软件开发方法,早期的编程是基于面向过程的方法的,也就是像C语言一样,啥都写成一个函数。但是随着工业项目的开发越来越大型,思路越来越复杂,面向对象的方法就诞生了,它的核心思想是将所有事物转化为一个个对象,将现实世界中的关系抽象成类和继承,再通过这种思路去对现实世界进行抽象与数字建模。
-
解释型: 传统的编译型语言是通过编译器将源码编译成机器语言,而解释型语言是先将代码翻译成中间代码,再通过解释器进行解释运行的。(移步下方有介绍Python解释器种类。)
-
动态数据类型: 不用在初始化时事先声明一个变量的数据类型是什么,你放什么数据进去,这个变量就是什么类型。很多同学容易将动态数据类型与弱类型搞混,弱类型是与数据类型转换相关的,而动态数据类型是与变量初始状态相关的。
-
强类型: 也就是解释器不会自动转换变量数据类型,不像JavaScript,输入一个数字就自动将它转为整型,在Python里,输入一个数字它就是个字符,需要手动进行数据类型转换。
2. Python解释器
- 官方CPython
C语言开发,最广泛的Python解析器。
- IPython
一个交互式、功能增强的CPython。
- PyPy
Python语言写的Python解释器,JIT技术,动态编译Python代码,因为JIT技术所以更灵活,更易于使用和试验。
- Jython
Python的源代码转化成Java的字节码,跑在JVM上,既有CPython中继承的模块库,又可以调用Java类,所以它已经成为一个完整的语言了。
- IronPython
与Jython类似,运行在.Net平台上的解释器,Python代码被转化成.Net的字节码。
3. 设计理念
很多同学都有听说,“人生苦短,我用Python。”这样的话。这是因为Python语言的设计理念之一就是:能用一种方法就只用这种方法。一个容易解释的方法就是好方法。在Python中内置有Python之禅。英语较好的同学可以看看。
# 输入这个语句可以看到The Zen of Python
import this
The Zen of Python, by Tim Peters
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.虽然这种 方式可能不容易,除非你是python之父
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! 命名空间是一种绝妙的理念,应当多加利用
>>>
4. Python的发展
Python因为近年来机器学习和人工智能的兴起,也被越来越多人使用。但是它本身也是一门非常优秀的语言,也可以用于web开发、游戏开发、自动化等方面。截止至2018.12,Python在TIOBE排行榜排第三名。
TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据,反映某个编程语言的热门程度。
5. 写在最后
无论是什么语言,只要学好了,都能排上用场。既然选择了Python,那便风雨兼程。
与各位共勉。