一、Python简介
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个面向对象的高级编程语言。与其它面向对象语言(如C++、java)不同的是,Python是一种动态语言(C++/java则是静态语言),在OOP(面向对象编程)机制上与静态语言有所差别,最关键的地方在于两点:
- 理解Python是如何利用查找树的机制来模仿类及实例之间的关系(Python的属性获取是按照从下到上的顺序来查找的);
- 理解动态语言是可以动态设置属性的。
1 Python的优点:
- 简单易懂,容易入门。
- Python是可扩展的,提供了非常完善的基础代码库和大量的第三方库。
2 Python的缺点
- 运行速度慢,和C程序相比非常慢,因为Python是解释型语言。
- 代码不能加密
3 Python应用
那Python适合开发哪些类型的应用呢?
首选是网络应用,包括网站、后台服务等等;
其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;
另外就是把其他语言开发的程序再包装起来,方便使用。
二、Python基础语法
1 输入和输出
在交互式环境的提示符>>>
下,直接输入代码,按回车,就可以立刻得到代码执行结果。另外,Python的注释以#
字符起始,直至实际的行尾。
1.1 输出
向屏幕输出:print +字符串
e.g. print 'hello world'
1.2 输入
接收键盘输入:raw_input()
e.g. name=raw_input() #name为保存输入的变量名,()中可以写一些提示字符串
2 数据类型和变量
在Python中,能够直接处理的数据类型有以下几种:
- 整数:Python可以处理任意大小的整数。
- 浮点数(即小数):注意科学计数法表示,把10用e代替。
- 字符串:字符串是以’x’或”x”括起来的任意文本,比如
'abc'
,"xyz"
等等。另外,注意转义字符\
和换行符\n
(也可用从属提示符...
替代)的使用。 - 布尔值:直接用
True
和False
表示布尔值,布尔值可以用and
、or
和not
运算。 - 空值:用
None
表示。 - 变量:变量不仅可以是数字,还可以是任意数据类型,变量名必须是大小写英文、数字和_的组合,且不能用数字开头。
- 常量:在Python中,通常用全部大写的变量名表示常量,如
PI=3.141592654
3 字符串和编码
3.1 字符编码
1.ASCII编码:是最早的编码标准,由美国制定,用1个字节(8位)编码字符(大小写英文字母、数字和一些符号)。
2.Unicode编码:为统一各国语言编码而制定的,用2个字节(16位)编码字符,原来用ASCII编码的字符直接在高8位补0。
3.UTF-8编码:为便于存储和传输(节约精神)而发展出的一种编码方式,是UTF标准的一种,UTF-8每次按8个位传输数据,是一种可变长编码。它把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节(ASCII可看成是UTF-8编码的一部分),汉字通常是3个字节。
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。下面是一个简单的用电脑记事本编辑的图示:
3.2 Python字符串
Python中以Unicode表示的字符串用u'...'
表示,如print u'中文'
。
Python中字符的Uniconde编码和UTF-8编码转换的方法:
- 把u'xxx'
转换为UTF-8编码的'xxx'
用encode('utf-8')
方法。
- 反过来,把UTF-8编码的字符串'xxx'
转换为 Unicode字符串u'xxx'
用decode('utf-8')
方法。
4 使用list和tuple
list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。
4.1 list
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
- 定义list变量用中括号
[]
e.g.list=['Mike','Bob','Tom']
- 索引从0开始,访问最后一个元素也可以用-1做索引
- 往list中追加元素到末尾:list.append(x)
e.g.list.append('Jan')
- 把元素插入到指定位置(索引):list.insert(i,x)
e.g.list.insert(1,'Jack')
- 删除list末尾的元素,用
pop()
方法
e.g.list.pop()
4.2 tuple
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,它是不变的有序列表。所谓的“不变”是指tuple的每个元素,指向永远不变。它用小括号定义,如tuple=('Mike','Bob','Tom')
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
5 条件判断和循环
5.1 条件判断
通用写法如下,主要每条判断语句后面要加:
,elif
是else if
的缩写。
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
5.2 循环
Python的循环有两种,一种是for…in循环,依次把list或tuple中的每个元素迭代出来,如:
names=['Mike','Bob','Tom']
for name in names:
print name
第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环,如:
sum=0
n=99
while n>0:
sum=sum+n
n=n-2
print sum
6 使用dict和set
使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。
6.1 dict
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。dict定义用大括号,如:
>>>d={'Mike':95,'Bob':75,'Tom':85}
>>>d['Mike']
95
要删除一个key,用pop(key)
方法,对应的value也会从dict中删除。
和list比较,dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而增加;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。另外,需要注意的一点是dict的key必须是不可变对象。
6.2 set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
>>>s=set([1,2,3])
>>>s
set([1,2,3])
通过add(key)
方法可以添加元素到set中;通过remove(key)
方法可以删除元素。
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。