Python快速入门
一、python 的安装
A. Windows下安装python
- 在python官网下载源文件,建议python2.75及其以上版本。
- 配置环境变量。将python安装位置添加系统path中。
- 测试python。打开windows命令行(win键+cmd),输入python,若无错误进入交互模式,则安装完成;否则,检查环境变量设置。
B. Linux(Ubuntu)下安装python
- 在python官网下载python安装包.
- 解安装文件。tar -xzvf **.tgz.
- ./configure
- make
- sudo make install
- 配置环境。sudo vi /etc/profile. 在末尾加python可执行文件路径即可。 如:PATH="$PATH:/home/Python-3.1" export PATH
C. Mac OSX 下安装python
Mac OSX通常会预装python,可能版本较低,你只需下载一个新版本安装即可。
二、python 简介
Pyhton是吉多·范罗苏姆在1989年的圣诞节期间为了打发时间而开发一个新的脚本解释程序。通常意义上,我们称pyhton为高级脚本语言(script language),也是一种面向对象的高级编程语言。
Python功能强大。豆瓣网就是用python搭建的。python有对操作系统服务的接口,可以进行系统编程。python也提供了对所有主流关系数据库系统的接口,如Oracle、MySQL、ODBC、SQLite。图形用户接口,内置TKinter图形编程接口,目前还有PyQT和wxPython。方便的网络服务和强大的数值计算,借助NumPy等可实现matlab功能,支持动画、3D可视化、并行处理等。
胶水语言(glue language)。许多编程语言都有接口,如C、C++、Matlab、openCV等。
Python文件格式。Python有.py .pyw .pyc .pyo .pyd等几种文件格式,其中.py 文件格式存储了python代码,运行时由python解释器载入代码,并将其解释为机器码执行。.pyc文件是Python源程序文件(*.py)经编译后生成的字节码文件; *.pyo文件是Python源程序文件(.py)经优化编译后生成的字节码文件。
三、python语法简介
缩进规则。python编程时遵循缩进规则,以4个空格为缩进单位。
1. Type and Data Structures.
python中数据类型不需要提前显示的定义或声明,直接赋值使用即可。比如a=3.7;b='hello world';
主要的数据类型有字符串(String)、布尔数据(Boolean)、整型(Int)、浮点型(Float)以及列表(List)、元组(Tuple)、集合(Set)、字典(Dict)。
a='hello world'; print a
a=2+3.24j; print a.real; print a.imag;
列表(list)是Python中一个很重要的数据结构。
list的创建。
创建一个空list,可以这样 li=[],或者也可以li=list()
list也可以创建时赋值,如:list1=['a','b','c','[1,2,3]']
注意:list中对象可以是任何类型的数据,数字、字符串、list、以及下面要介绍的Tuple、Set、Dict等。
list的查询。
直接用下标进行查询。如val=list1[0],那么 val='a'
list支持负索引,如val=list[-1],那么 val=[1,2,3]
list添加、插入元素。
list中append函数可以将元素追加到列表的末尾。如list1.append('0'),那么list1=['a','b','c','[1,2,3]',0]
而insert函数则可将元素插入到任意位置。如list1.insert(2,'hh'),则将list1=['a','b','hh','c','[1,2,3]',0]
list删除元素。
del list[n]则删除下标为n的元素,如del list1[5],则['a','b','hh',c','[1,2,3]']
remove(item)则删除item元素,如list1.remove('hh')则list1=['a','b','c','[1,2,3]']
list的搜索。
count(item)函数统计item出现的次数,如count=list1.count('a'),那么count=1
index(item)函数寻找item出现的位置,如index=list1.index('b'),则index=1
list小技巧。
list切片运算符,如a=list1[1:2],则返回a=['b','c']
'+'运算符可将连接两个列表,a=['a','b'] b=[1,2] c=a+b,则c=['a','b',1,2]
list中常用函数。
len(list1)可得到list1的长度,即对象数目;
list1.reverse()将列表倒转;
list1.sort()将列表排序;
元组(Tuple)
Python中元组(Tuple)和列表(List)用法极为相似,最大的不同在于元组中元素创建后无法更改。
Tuple用()来表示,定义一个Tuple通常用如下方法:empty=() x_y_z=('x','y','z')。List中查询方法、切片等均适用于Tuple,但删除,添加等可以更改Tuple元素的方法均不可适用。如x_y_z.append('012')会出现错误。
Tuple的好处。
对不需要修改的数据使用Tuple则可以保证代码的安全性;
在dictionary中Tuple可以作为key,而列表则不可以;
Tuple比List可以减少内存的浪费。
集合(Set)
Set表示集合,集合中数据具有无序性且不能重复。
如 s=set('hello world'),那么事实上集合s中只有8个元素,可以用len(s)计算集合中元素个数。
集合中常见操作.
并集. s=s1|s2, item in s1 or s2
交集. s=s1&s2, item in s1 and s2
差集. s=s1-s2, item in s1 and not in s2
对称差. s=s1^s2, item in s1 or s2 but not both
添加、删除元素.
s.add(item)向集合中添加一个元素,而s.update([items])则向集合中添加多个元素。
s.remove(item)代表删除元素item。
判断关系的方法.
in来判断元素是否在集合中,如 2 in set([1,2,3])返回True;
s1.issubset(s2)判断s1是否是s2的子集;s1.issuperset(s2)则相反。
注意:frozenset为不可改更集合。
字典(Dict)
字典Dict是Python中一个极为重要的数据结构。字典中元素是无序的(但依然可以依照关键字进行排序)。
Dict的创建。
dict1 = {} 或者 dict2 = dict()创建空字典;可以用列表、元组等创建,dict3=dict([('a',1),('b',2)]);
可以创建时初始化,dict4={'a':1,'b':2} 或dict5=dict(a=1,b=2)。
Dict常用操作方法。
keys(),values()和items()很常用。
如dict1={'a':1,'b':2},dict1.keys()返回 ['a','b'];
dict1.values()返回[1,2];
dict1.items()返回[('a',1),('b',2)]。
查询item的值直接用dict[item]即可。
两个字典合并用update()函数,dict1.update(dict2);删除元素用del。
2. Modules and Package.
为了实现较为复杂的功能,不可避免地使用模块和包。python中查看系统搜索路径为print(sys.path)
。特别地,我们通常把包放置在/Library/Python/**/site-packages中。引入某一特定路径下的模块可用sys.path.append(yourmodule)
,或者将该路径添加到python系统路径下避免每次通过代码指定路径。一个python源代码文件*.py即可看成一个模块。
把若干个python模块放在一个目录下,然后加上—init.py就组织成一个包了。
import module 和from module import *
import module会导入该模块中所有的标识,但这些标识都在module的名字空间下面;而from module import *则将module中所有标识放在当前名字空间中。
导入模块或包时依照当前目录、环境变量pythonpath所指定的目录、安装目录进行搜索。
3. Classes.
python是一种面向对象的高级编程语言,自然也支持类的相关操作,包括类的继承、多态等。其定义使用关键词class,可提供一个类作为其继承的基类,否则就继承object。
class myClassName(object):
"类的说明文档"
类的属性定义
类的初始化方法 init
类的其他方法
类定义如下:
class Student(object):
"This class is Student class."
name='hongbo'
age=18
def init(self,name='hy',age=20):
self.name=name
self.age=age
def getAge(self):
print self.age
def showClassDoc(self):
print self.class.doc
测试:
stu=Student()
print stu.name
stu.getAge()
更详细内容请进一步学习。
4. Standard Library.
python标准库中包含许多很有用的模块,详细介绍参见官方API或<<Python 标准库>>中文PDF。python官方API请参见The Python Standard Library,中文版请参见Python标准库中文pdf。
四、python应用实例
以python简单爬虫为例进行简要介绍。
五、python学习资源
python相关学习资源很多,但最好的还是官方API文档最为齐全,不少培训机构就是API文档翻译讲解一遍。。。
入门级:
- Python 官方文档
- 简明python教程
- Learning Python
- A byte of python
进阶:
- The Python Standard Library
- Python高级编程
- Dive Into Python
- Python参考手册
网络资源:
除此之外,还有最有用的工具就是百度和google,这才是程序猿真正的利器!!
Written By Hongbo Huang ,Apr 17,2014