Python的由来
距今30年前(即1989年),坐标荷兰阿姆斯特丹,Guido van Rossum为了打发圣诞节的无趣,便决定开发一款新的脚本解释程序,作为ABC语言(ABC是由Guido参加设计的一种教学语言)的一种继承。基于ABC语言的失败教训,并吸取其他语言的优势,Guido将Python打造成一款自由开放优美且强大的语言。
Python第一个公开发行版发行于1991年,之后由于Python语言简洁、易读以及可扩展性,在国外越来越多的科研机构和知名大学都开始使用它,自2004年以后,Python的使用率更是呈线性增长。2000年10月Python2.7稳定版发布,直到2018年3月Python作者在邮件列表上宣布Python 2.7将于2020年1月1日终止支持,历经近20年,Python2最终宣布退出历史舞台。然而Python3早就于2008年12月发布,但并不完全兼容Python2,幸运的是经历10年的发展,绝大部分Python2扩展库都已支持Python3,如果是0基础学Python,建议直接Python3即可。
人工智能利器
根据数据平台Kaggle最新发布的2018年机器学习及数据科学调查报告,在工具语言使用方面,Python是数据科学家和人工智能从业者使用最多的语言,并且比2017年调查结果中Python占比76.3%又多了将近7%(见下图)。所以如果你想从事人工智能行业的技术工作,那必须得先学会使用Python。
Python的优势
- 简洁至极
举个例子,Python输出HelloWorld只需下面一行:
print("Hello World!")
而同样的,Java语言则需要如下代码:
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
这仅是最简单的输出,可想而知越复杂的功能代码量差距也会越大。
-
解释型
Python作为一种解释型语言,很多年里一直打着“脚本语言”的标签,并因为运行速度慢而被人诟病。但后来这也成为一种优势,相对于Java/C语言需要先编译再运行,Python则不需要编译即可直接运行,甚至不需要把代码写到文件里,只要在命令行输入一行行代码,即可以得到结果,是不是很方便。 -
面向过程&面向对象
Python既支持面向过程编程也支持面向对象的编程语言。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的,而在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。这也使得代码编写更加灵活且易读。 -
动态类型
熟悉Java的朋友应该都知道,它是静态类型语言,即一个变量一旦被指定类型,就不能再接受其他类型的值,如下代码:
List<Integer> numbers = new ArrayList<>();
numbers.add(1); //正常
numbers.add("2"); //编译报错
而Python作为动态类型语言,则不受这个限制,如下代码:
numbers = list(range(10))
numbers.append('ten')
print(numbers)
//输出结果:
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'ten']
当然这里并不是说动态类型要比静态类型语言好,但在写AI或大数据处理相关程序时,经常处理大量非结构化数据,所以至少在这些领域,动态类型的Python要更有优势。
- 强大的扩展库
Python拥有强大的AI支持库,例如最著名的NumPy和sklearn(scikit-learn)。
NumPy由数据科学家Travis Oliphant创作,支持维度数组与矩阵运算。结合Python内置的math和random库,堪称AI数据神器!有了它们就可以放心大胆玩矩阵。而且矩阵的转置、求逆、求和、叉乘、点乘……都可以轻松地用一行代码搞定,行、列可以轻易抽取,矩阵分解也不过是几行代码的问题。
再比如,训练和使用一个logistic Regression模型,也只需要下面几行代码就可以:
# import the LogisticRegression
from sklearn.linear_model import LogisticRegression
# Use default parameters
classifier = LogisticRegression()
# train model
classifier.fit(train_set, target)
# do test
y_hat = classifier.predict(test_set)
# print out test results
print y_hat
结语
综上,目前Python在人工智能领域已经有了不可替代的地位,就连著名的深度学习框架tensorflow,其主体和原生接口也都是由Python实现的,所以学习Python将是人工智能及大数据时代必备利器。