Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。
Python 是一个高层次的结合了解释型、互动性和面向对象的脚本语言。
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
Python的解释器有多个语言实现,我们常用的是CPython(官方版本的C语言实现),其他还有Jython(可以运行在Java平台)、
IronPython(可以运行在.NET和Mono平台)、PyPy(Python实现的,支持JIT即时编译)
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
Python代码定义的更清晰。
Python的成功在于它的源代码是相当容易维护的。
Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
Python提供所有主要的商业数据库的接口。
Python支持GUI可以创建和移植到许多系统调用。
你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的通信。一些Web框架,如Django,TurboGears,web2py,Zope等,可以让程序员轻松地开发和管理复杂的Web程序。
在很多操作系统里,Python是标准的系统组件。大多数Linux发行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在终端下直接运行Python。有一些Linux发行版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器,Red Hat Linux和Fedora的Anaconda安装器。Gentoo Linux使用Python来编写它的Portage包管理系统。Python标准库包含了多个调用操作系统功能的库。通过pywin32这个第三方软件 包,Python能够访问Windows的COM服务及其它Windows API。使用IronPython,Python程序能够直接调用.Net Framework。一般说来,Python编写的系统管理脚本在可读性、性能、代码重用度、扩展性几方面都优于普通的shell脚本。
NumPy,SciPy,Matplotlib可以让Python程序员编写科学计算程序。
PyQt、PySide、wxPython、PyGTK是Python快速开发桌面应用程序的利器。
Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫。第三方库Twisted支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。
很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型。
产品早期原型和迭代 YouTube、Google、Yahoo!、NASA都在内部大量地使用Python。
python 中的注释有单行注释和多行注释,单行注释以#开头,多行注释用三个单引号’‘’或者三个双引号“”“将注释括起来
开发人员在程序中自定义的一些符号和名称
自定义的,如变量名、函数名等
标识符由字母、下划线和数字组成,且数字不能开头
python 中的标识符是区分大小写的
见名知意,起一个有意义的名字,尽量做到看一眼就知道什么意思(提高代码的可读性),比如:名字就定义为name,定义学生是student
小驼峰命名法(lower camel case):第一个单词以小写字母开头,第二个单词的首字母大写,例如:myName,aDog
大驼峰命名法(upper camel case):每一个单词的首字母都采用大写字母,例如:FirstName,LastName
不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如:send_buf
python 一些具有特殊功能的标识符,这就是所谓的关键字
关键字是 python 已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符,可以通过以下命令进行查看当前系统中python 的关键字
import keyword
keyword.kwlist
变量是内存中的一块存储区域,可以存储数据。如:
a = 1
a = b = c = 3
a, b, c = 1, 2, 'hello'
为了更充分地利用内存空间以及更有效率的管理内存,变量是有不同的类型
Number(数字):int(整型)、float(浮点型)、complex(复数)
bool(布尔类型):True、False
String(字符串)
List(列表)
Tuple(元祖)
Set(集合)
Dictionary(字典)
在 python 中,只要定义了一个变量,而且它有数据,那么它的类型就已经 确定了,不需要开发者主动地去说明它的类型,系统会自动辨别 可以使用 type(变量的名字),来查看变量的类型
函数 | 描述 |
---|---|
int(x[,base]) | 将x转换为一个整数 |
float(x) | 将x转换为一个浮点数 |
str(x) | 将对象x转换为字符串 |
repr(x) | 将对象x转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效python表达式并返回一个对象 |
tuple(s) | 将序列s转换为一个元祖 |
list(s) | 将序列s转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典,d必须是一个(key,value)元祖序列 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 讲一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制的字符串 |
oct(x) | 将一个整数转换为一个八进制的字符串 |
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=‘’
在程序中,看到了 % 这样的操作符,这就是 python 中格式化输出,如:
age = 10
print("我今年%d岁"%age)
格式符号 | 转换 |
---|---|
%c | 字符 |
%s | 通过str()字符串转换来格式化 |
%i | 有符号十进制整数 |
%d | 有符号十进制整数 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母) |
%X | 十六进制整数(大写字母) |
%e | 索引符号 |
%E | 索引符号 |
%f | 浮点实数 |
%g | %f和%e的简写 |
%G | %f和%E的简写 |
在输出的时候,如果有 \n ,那么此时 \n 后的内容会在另外一行展示
python 提供了 input() 函数从标准输入读入一行文本,默认的标准输入是键盘。input 可以接收一个 python 表达式作为输入,并将运算结果返回
令 a = 10,b = 21
运算符 | 描述 | 实例 |
---|---|---|
+ | 加:两个对象相加 | a + b 输出结果 31 |
- | 减:得到负数或者一个数减去另一个数 | a - b 输出结果 -11 |
* | 乘:两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 210 |
/ | 除:x 除以 y | b / a 输出结果 2.1 |
% | 取模:返回除法的余数 | b % a 输出结果 1 |
** | 幂:返回 x 的 y 次幂 | a**b 为 10 的 21 次方 |
// | 取整除:向下取接近商的整数 | b // a 输出结果 2 |
所有比较运算符返回1表示真,返回0表示假,这分别与特殊的变量 True 和 False 等价(注意这些变量的大写)。
运算符 | 概述 | 实例 |
---|---|---|
== | 等于:比较对焦是否相等 | (a == b) 返回 False |
!= | 不等于:比较两个对象是否不相等 | (a != b)返回 True |
> | 大于:返回 x 是否大于 y | (a > b)返回 False |
< | 小于:返回 x 是否小于 y | (a < b )返回 True |
>= | 大于等于:返回 x 是否大于等于 y | (a >= b)返回 False |
<= | 小于等于:返回 x 是否小于等于 y | (a <= b)返回 True |
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c=a+b 将 a+b 的结果赋值给 c |
+= | 加法赋值运算符 | c+=a 等效于 c=c+a |
-+ | 减法赋值运算符 | c-=a 等效于 c=c-a |
*= | 乘法赋值运算符 | c*=a 等效于 c=c*a |
/= | 乘法赋值运算符 | c/=a 等效于 c=c/a |
%= | 除法赋值运算符 | c%=a 等效于 c=c%a |
**= | 幂赋值运算符 | c**=a 等效于 c=c**a |
/= | 取整除赋值运算符 | c//=a 等效于 c=c//a |
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔“与”:如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值 | (a and b) 返回20 |
or | x or y | 布尔“或”:如果 x 为 True,x or y 返回 x 的值,否则返回 y 的计算值 | (a or b) 返回10 |
not | not x | 布尔“非”:如果 x 为 True,not x 返回 False,如果 x 为 False,not x 返回 True | not( (a and b) )返回 False |