Python入门指南

发表时间: 2022-09-02 23:03

简介

>>> import thisThe 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 开发者哲学是 “用一种方法,最好是只有一种方法来做一件事”。在Python解释器内运行 import this 可以获得 “Python格言” 完整的列表。

Python优点:

  • 简单易学、学习成本低,开发效率高,高级语言,可扩展性强;
    • 标准库和第三方库众多,功能强大,既可以开发小工具,也可以开发企业级应用;
    • 开源的、免费的;

Python缺点:

    • 运行速度慢,Python 的运行速度几乎是最慢的,不但远远慢于 C/C++,还慢于 Java。
    • 代码加密困难,不像编译型语言的源代码会被编译成可执行程序,Python 是直接运行源代码,因此对源代码加密比较困难。

应用领域

云计算:云计算最火的语言,典型应用OpenStack

WEB开发

    • Python相比php、ruby的模块化设计,非常便于功能扩展;多年来形成了大量优秀的web开发框架,并且在不断迭代
    • 如目前优秀的全栈的django、框架flask,都继承了python简单、明确的风格,开发效率高,易维护,与自动化运维结合性好。

人工智能

    • 基于大数据分析和深度学习而发展出来的人工智能本质上已经无法离开python的支持,目前世界优秀的人工智能学习框架如Google的TransorFlow、FaceBook的PyTorch以及开源社区的神经网络库Keras等是用python实现的,甚至微软的CNTK(认知工具包)也完全支持Python,而且微软的VsCode都已经把Python作为第一级语言进行支持。

系统运维

    • Python在与操作系统结合以及管理中非常密切,目前所有Linux发行版中都带有python,e且对于Linux中相关的管理功能都有大量的模块可以使用,例如目前主流的自动化配置管理工具:SaltStack Ansible(目前是RedHat的),目前在几乎所有的互联网公司,自动化运维的标配就是 python+Django/flask,另外,在虚拟化管理方面已经是事实标准的openstack就是python实现的,所以Python是所有运维人员的必备技能。

金融

    • 量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测。

大数据

    • Python相对于其它解释性语言最大的特点是其庞大而活跃的科学计算生态,在数据分析、交互、可视化方面有相当完善和优秀的库(python数据分析线:Numpy Pandas Scipy Matplotlip lpython),并且形成了自己独特的面向科学计算的Python发行版Anaconda,而且这几年一直在快速进化和完善,对传统的数据分析语言如R、Matlab、sas、stata形成了非常强的替代性。

图形GUI

    • PyQT、WxPython、TkInter

编程语言简介和特点

编译和解释型语言的区别

CPU不能直接认识并执行我们写的语句,它只能认识机器语言(CPU指令集;二进制的形式);因此我们开发语言的Virtual Machine要将识别的开发语言转换成机器语言让CPU去执行;那么就有两种以下的方式:

  • 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快
  • 解释器则是只在执行程序时,才一条条地解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行得快的

编译型

解释型

混合型

C

JavaScript

Java

C++

Python

C#

GO

Ruby


Swift

PHP


Object-C

Perl


编译和解释型的优缺点

编译型语言

解释型语言

优点

编译器一般会在预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高,可以脱离语言环境独立运行。

良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

缺点

编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

每次运行的时候都要解释一遍,性能上不如编译型语言。

静态和动态语言

动态类型语言

静态类型语言

动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

静态类型语言与动态类型语言刚好相反,它的数据类型是在编译期间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#,Java等。

强类型和弱类型语言

强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效地避免许多错误。另外,“这门语言是不是动态语言” 与 “这门语言是否类型安全之间” 是完全没有联系的。

强类型定义语言

弱类型定义语言

强制数据类型定义的语言,也就是说,一旦一个变量被制定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。例如:定义了一个整形变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

数据类型可以被忽略的语言,它与强类型定义语言相反,一个变量可以赋不同数据类型的值

编程语言

特点

C/C++

编译型、静态语言、强类型

GO

编译型、静态语言、强类型

Python

解释型、动态语言、强类型

JavaScript

解释型、动态语言、弱类型

Java

混合型(本质是解释型)、静态语言、强类型