Python 是一种跨平台的计算机程序设计语言,是 ABC 语言的替代品,属于面向对象的动态类型语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
Python 支持多种编程范型,包括函数式、指令式、结构化、面向对象和反射式编程。Python 解释器易于扩展,可以使用 C 或 C++ (或者其他可以通过 C 调用的语言)扩展新的功能和数据类型。Python 也可用于可定制化软件中的扩展程序语言。Python 拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库,提供了适用于各个主要系统平台的源码或机器码。
python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的优点:
软件质量高
Python 秉承了简洁、清晰的语法,以及高度一致的编程模式。始终如一的设计风格,可以保证开发出相当规范的代码。
针对错误,Python 提供了“安全合理”的退出机制。Python 支持异常处理,能有效捕获和处理程序运行时发生的错误,能够监控这些错误并进行处理。
开发速度快
Python 致力于开发速度的最优化:简洁的语法、动态的类型、无需编译、丰富的库支持等特性使得程序员可以快速的进行项目开发。Python 往往只要几十行代码就可以开发出需要几百行 C 代码的功能。
功能强大
Python 的功能足够强大,还有许多面向其他系统的接口,所以完全可以使用 Python 开发整个系统的原型。
为了完成更多特定的任务,Python 内置了许多预编码的库工具,从正则表达式到网络编程,再到数据库编程都支持。在 web 领域、数据分析领域等,Python 还有强大的框架可以帮助快速开发服务。例如:Django、TruboGears、Pylons 等。
易于扩展
Python 易于扩展,(对于 CPython)可以通过 C 或 C++ 编写的模块进行功能扩展,使其能够成为一种灵活的黏合语言,可以脚本化处理其他系统和组件的行为。
跨平台
Python 是跨平台的。在各种不同的操作系统上(Linux、windows、MacOS、Unix 等)都可以看到 Python 的身影。因为Python 是用 C 写的,又由于 C 的可移植性,使得 Python 可以运行在任何带有 ANSI C 编译器的平台上。尽管有一些针对不同平台开发的特有模块,但是在任何一个平台上用 Python 开发的通用软件都可以稍事修改或者原封不动的在其他平台上运行。这种可移植性既适用于不同的架构,也适用于不同的操作系统。
Python 的缺点
和 C/C++ 程序相比 Python 的运行速度非常慢
因为 Python 是解释型语言,代码在执行时会一行一行地翻译成 CPU 能理解的机器码,这个翻译过程非常耗时,所以很慢。而 C 程序是运行前直接编译成 CPU 能执行的机器码,所以非常快。不过,根据二八定律,大多数程序对速度要求不高。某些对运行速度要求很高的情况,Python 设计师倾向于使用 JIT 技术,或者用使用 C/C++ 语言改写这部分程序。
而且开发时间是宝贵的资源,比 CPU 时间更珍贵。Python 开发速度带来的效益往往比执行速度带来的损失更为重要,尤其是在现代计算机高速的处理能力情况下。 一些改进可能太难以实现,或者可能影响代码的可移植性或可维护性。 并非所有的性能改进都值得付出努力。
代码不能加密
如果要发布 Python 程序,实际上就是发布源代码。这一点跟 C 语言不同,C 语言不用发布源代码,只需要把编译后的机器码发布出去。要从机器码完整反推出 C 代码是不可能的。
Web 网络开发
Python 提供丰富的模块支持 sockets 编程,多线程编程,能方便快速地开发网络服务程序。支持最新的 XML 技术,支持 json 语言,数据库编程,而且 Python 的 ORM 框架,使得操作数据库非常方便。
Python 还有优秀的 Django、Tornado、Flask 等 web 开发框架,还用众多的开源插件的支持,足以适用各种不同的 web 开发需求。
自动化运维
Python 对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具和部件的理想工具。Python 程序可以搜索文件和目录树,可以运行其他程序,可以使用进程和线程并行处理。
网络爬虫
在文本处理方面,python 提供的 re 模块能支持正则表达式,还提供 SGML,XML 分析模块,许多程序员利用 python 进行 XML 程序的开发。
图形处理
有 PIL、Tkinter 等图形库支持,能方便进行图形处理。 多媒体应用 ,Python 的 PyOpenGL 模块封装了“OpenGL应用程序编程接口”,能进行二和三维图像处理。PyGame 模块可用于编写游戏软件
除此之外,Python 还应用于游戏、人工智能、大数据分析、机器人等领域,Python 是 人工智能首选的编程语言。
Cpython
执行过程:程序 ----(C 解释器)----(字节码)----(机器码)---- cpu
Python 的官方版本,这是 Python 初始的以及维护得最好的实现,使用 C 编写。新的语言特性一般会最先在这里出现。
CPython 实现会将源文件(py 文件)转换成字节码文件(pyc 文件),然后运行在 Python 虚拟机上。
Jyhton
执行过程:程序 ----(java 解释器)----(字节码)----(机器码)---- cpu
Python 的 Java 实现,此实现可用作 Java 应用程序的脚本语言,或可用于使用 Java 类库创建应用程序,它也经常用于为 Java 库创建测试。Jython 会将 Python 代码动态编译成 Java字 节码,然后在 JVM 上运行。
PyPy
执行过程:程序 ----(字节码)----(机器码)---- cpu
完全用 Python 编写的 Python 实现。它支持在其他实现中没有找到的几个高级功能,如 stackless 支持和一个 Just in Time 编译器。PyPy 将 Python 的源码翻编译成字节码再编译成机器码。
其他类别:Python for .NET、IronPython、RubyPython、Brython …
python 有两个版本,python 2.X 和 python 3:
python 2.x 的最后一个版本是python 2.7(于 2010 年发布),官方将支持到 2020 年。
python 3.X 的第一个版本 python 3.0(于 2008 年发布)
python 3.X 不兼容 Python 2.X 版本,官方也有发布 python2.6 作为过渡到 Python 3.0 的版本,2.6 之后的版本都为过渡版本。
为什么要开发 Python 3.X 版本呢?因为 python 发展了 20 多年,里面有很多重复的功能,重复的模块,很多代码也变得不那么简洁,所以 Guido 决定进行一次彻底的升级,原则是去繁从简,从而有了后续的 Python 3.X 版本。
缩进
在 java、c/c++ 语言中,用 “{ }” 代表代码块。
Python 使用缩进(空格,最好是 4 个空格)来表示代码块,不需要使用大括号{},连续的多条具有相同缩进量的语句为一个代码块。
缩进的空格数是可变的,但是 同一个代码块的语句必须包含相同的缩进空格数 。
例如:if 、for、 while、 def 、 class 等语句都会使用到代码块。通常,语句末尾的冒号代表代码块的开始,示例如下:
if x>0:
y=1
else:
y=-1 # 注意:同一个代码块中的语句,其缩进量应相同,否则会出现 indentationError (缩进错误)异常。
注释
为程序添加说明性语句,帮助程序员阅读和理解代码。
语句续行符号( \ )
通常 Python 中的一条语句占一行,没有语句结束符号。当语句较长时,可以使用反斜杠( \ )来实现多行语句
注意:在符号( \ )之后不能有其他符号,包括空格和注释。
语句分隔符( ; )
使用语句分隔符分隔的多条语句可视为一条复合语句,Python 允许将单独的语句或复合语句写在冒号之后。
保留字是程序设计语言中保留的单词,以便版本升级更新后使用。
关键字是程序设计语言中作为命令或常量的单词。
注意:
Python 3.7.2 中 35 个保留字的含义及作用
序号 | 保留字 | 说明 |
---|---|---|
1 | and | 逻辑与操作,用于表达式运算 |
2 | as | 用于转换数据类型 |
3 | assert | 用于判断变量或条件表达式的结果 |
4 | async | 用于启用异步操作 |
5 | await | 用于异步操作中等待协程返回 |
6 | break | 中断循环语句的执行 |
7 | class | 定义类 |
8 | continue | 继续执行下一次循环 |
9 | def | 定义函数或方法 |
10 | del | 删除变量或序列的值 |
11 | elif | 条件语句,与 if、else 结合使用 |
12 | else | 条件语句,与 if、else 结合使用;也可用于异常或循环语句 |
13 | except | 包含捕获异常后的处理代码块,与 try、finally 结合使用 |
14 | False | 含义为“假”的逻辑值 |
15 | finally | 包含捕获异常后的始终要调用的代码块,与 try、except 结合使用 |
16 | for | 循环语句 |
17 | from | 用于导入模块,与 import 结合使用 |
18 | global | 用于在函数或其他局部作用域中使用全局变量 |
19 | if | 条件语句,与 elif、else 结合使用 |
20 | import | 导入模块,与 from 结合使用 |
21 | in | 判断变量是否在序列中 |
22 | is | 判断变量是否为某个类的实例 |
23 | lambda | 定义匿名函数 |
24 | None | 表示一个空对象或是一个特殊的空值 |
25 | nonlocal | 用于在函数或其他作用域中使用外层(非全局)变量 |
26 | not | 逻辑非操作,用于表达式运算 |
27 | or | 逻辑或操作,用于表达式运算 |
28 | pass | 空的类、方法或函数的占位符 |
29 | raise | 用于抛出异常 |
30 | return | 从函数返回计算结果 |
31 | True | 含义为“真”的逻辑值 |
32 | try | 测试执行可能出现异常的代码,与 except, finally 结合使用 |
33 | while | 循环语句 |
34 | with | 简化 Python 的语句 |
35 | yield | 从函数依次返回值 |