python2.7.8速成教程

1、Python简介
学习前提:C语言
参考资料:https://docs.python.org/zh-cn/2.7/index.html
Python版本(个版本语法差异很大):
V2.7.:各种类库资源比较丰富
V3.4.
:改进了许多Python的语法
Python的优势:
Python更简单易用,容易出成果
Python还提供比C更多的错误检查
Python可以方便的实现其它Python程序中重复使用的模块
Python是一门解释性的语言,因为没有编译和链接

2、Python环境搭建
Python+Eclipse+PyDev
配置Eclipse
在Eclipse中建立Python工程

3、Python最基本语法
Python文件后缀是.py
print的使用
语句不用加;
中文显示:# -- coding:utf-8 --
注释:# 单行注释
‘’’ 多行注释 ‘’’
变量不需要定义,直接拿来使用,变量不需要指明数据类型

4、Python的基本算数运算
+,-,*,()
/:整数运算向下取整,浮点数运算正常显示
%:取余运算,整数运算
**:计算幂乘方,优先级较高
=:赋值运算符可以给变量赋值

5、Python的字符串及基本运算符
字符串:‘字符串’,“字符串"一样的效果,都以解释转义字符
原始字符串:r’字符串’
跨行字符串:三引号:”""…""“或者’’’…’’’。首行加\,避免换行
“””
Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to
“”"
+运算符连接字符串,两个字符串也可以自动连接
*运算符重复显示字符串
字符串可以用下标索引,下标从0开始,
索引值正:左到右
索引值负:右到左
切片:word[0:2],word[:2],word[3:]
Python字符串不可以被更改,它们是不可变的.如果想改变必须创建新的字符串
len函数可返回字符串的长度

6、Python的列表及其操作
列表写成中括号中的一列用逗号分隔的值,类型可相同也可不同
与字符串一样可以索引和切片
通过+运算可以进行连接
列表的值可以通过索引改变
列表通过append()方法可以在列表后面加入元素
len可以得到列表的元素个数
列表也可以嵌套

7、Python中的关系运算
>,<,==,!=,>=,<=,in
返回结果为真或假

8、Python中的逻辑运算
and:同真为真,否则为假
or:同假为假,否则为真
not:假变真,真变假

短路规则:
	and:当第一个式子为假,就不在运算后面的式子了
	or:当第一个式子为真,就不在运算后面的式子了

9、Python中的分支结构
Python是用缩进来标明成块的代码
通过if 条件: 来开始分支,else:来开始else分支
通过if 条件: elif来开始新的分支
if结构可以嵌套

10、Python中的循环结构
循环用于重复执行一些程序块
for循环的基本结构
for 元素 in 序列:
statement

函数range()可以快速建立表

while循环的基本结构
	while 条件:
		statement
		
循环中断
	break:跳过整个循环
	continue:在循环的某一次执行中,如果遇到continue, 那么跳过这一次循环,进行下一次的循环

11、Python中的函数使用
函数最重要的目的是方便我们重复使用相同的一段程序
函数的定义的基本格式:
def 函数名(参数列表逗号隔开):
函数体处理
return 处理结果
函数的参数可有可无,return语句可有可无,可返回多个值用逗号隔开,代表一个tuple
函数的调用方法:直接通过函数的名字加参数
参数传递:
值传递:基本数据类型
指针传递:列表

12、Python中类的基本操作
Python使用类(class)和对象(object),进行面向对象(object-oriented programming,简称OOP)的编程。
面向对象思想:
类:对象的集合
对象:某一个类的实例
定义类的基本格式
class 类名():
属性
属性
def 方法名(参数):
方法体
定义类的对象
变量名 = 类名()
类的对象访问属性:变量名.属性名

13、Python中类的继承
类本身进一步细分成子类的过程,称为继承
继承的基本格式
class 类名(父类名):
属性
方法:
方法体
子类享有父类的所有属性,面向对象的思想提高了程序的可重复使用性。
如果没有写父类,那么父类是object。

14、Python中类的特殊用法
类中方法的self参数,在方法内部调用自身的属性或方法
构造方法__init__(),实例化对象的时候自动调用
构造方法可无参数也可有参数

15、Python中概念澄清
Python是一门面向对象语言
dir函数可以查看类或者对象的所有属性
help函数可以查看类的详细信息
list和tuple都是类,常用方法count,index,append,sort,pop,remove,insert等
http://tool.oschina.net/apidocs/apidoc?api=python2.7.3
基本的运算都可以对类进行操作,但是可能做了一些适应,+
你也可以在自己的类中定义"+"运算

16、Python中的容器container
能储存多个元素的对象称为容器(container)
list,tuple都是容器
词典(dictionary)也是容器,类似于其他语言的map,有key和value
词典包含有多个元素,每个元素以逗号分隔。每个元素包含有两部分,键和值,不可变对象作为键。值可以是任意对象。键和值两者一一对应。
词典的元素没有顺序。不能通过下标引用元素,只能通过键来引用
可以通过对新的key赋值value,在词典中加入新的元素
词典常用方法:
dic.keys():得到所有的key
dic.values():得到所有的值
dic.items():得到所有的键值对
del dic[2]:删除词典中的key为2的元素
len函数:可得到dic中元素个数

17、Python中的文本文件操作
Python具有基本的文本文件读写功能
创建文件对象:f = open(文件名,模式)
最常用的模式有:
“r” # 只读
“w” # 写入
文件对象常用方法:
读取:
str = f.read(N) # 读取N bytes的数据
str = f.readline() # 读取一行
str = f.readlines() # 读取所有行,储存在列表中,每个元素是一行。
写入:
f.write(‘I like Python’) # 将’I like Python’写入文件
关闭文件:
f.close()

18、Python中的模块结构
模块(module)是为了更好的组织已经有的程序,以方便重复利用
在Python中一个.py文件就构成一个模块。可以调用其它文件中的程序。
引入模块:
定义一个模块1,实现一个方法,或者是第三方的模块
在模块2中通过import导入模块1,不加.py后缀
在模块2中通过 模块.对象 即可调用
其他引入方式:
import a as b # 引入模块a,并起名字为b,今后用b调用
from a import function1 # 从模块a中引入function1对象。调用时可不说明
from a import * # 从模块a中引入所有对象。调用时都不用说明
模块搜索路径:
1、程序所在的文件夹,自定义的模块或者引入的第三方模块
2、标准库的安装路径
3、操作系统环境变量PYTHONPATH所包含的路径

可以将模块放在同一个文件夹中,构成一个模块包,此包必须包含一个__init__.py的文件
引入模块包:import 包名.module

19、Python中特殊的参数传递
函数的参数传递一般是根据位置,传递对应的参数
函数的参数也可以根据每个参数的名字传递参数,函数调用的时候指明要传递的参数的名字
Python中还支持函数参数的默认值,在定义函数的时候写上参数默认的值即可,调用时此参数可以不传值就用默认的值,
注意:如果要使用函数的参数默认值的话,一定要从右边开始有默认值
包裹参数定义:函数的参数不确定的时候可以使用,定义函数时参数前面加*,调用函数时可传递多个参数,函数已tuple的形式接收
如果参数传递的是一个字典,则参数前面加**
函数如果定义不变,希望把tuple或者词典的内容分别传给对应的参数的话,可以使用解包裹方法传参数
def func(a,b,c):
print a,b,c

	args = (1,3,4)
	func(*args)
	
	dict = {'a':1,'b':2,'c':3}
	func(**dict)

20、Python中循环相关的常用函数介绍
range(start, stop[, step])函数:可以构造列表
S = ‘abcdefghijk’
for i in range(0,len(S),2):
print S[i]
enumerate():可以在每次循环中同时得到下标和元素
S = ‘abcdefghijk’
for (index,char) in enumerate(S):
print index
print char
zip():可以在一次循环中从各个序列分别取出一个元素
ta = [1,2,3]
tb = [9,8,7]
tc = [‘a’,‘b’,‘c’]
for (a,b,c) in zip(ta,tb,tc):
print(a,b,c)

21、Python中的函数对象
在Python中函数也是对象,可以赋值给其它对象名,或者作为参数传递
可以使用lambda函数,构造新的函数
func = lambda x,y: x + y
print func(3,4)
函数可以作为一个对象,进行参数传递
map()是Python的内置函数,有两个参数:
一个是lambda所定义的函数对象
一个是包含有多个元素的表
作用是把每个元素都带入lambda函数运算
filter()函数用来筛选数据,参数如下:
一个是lambda所定义的函数对象
一个是包含有多个元素的表
作用是把每个元素都带入lambda函数返True,则该次的元素被储存于返回的表中。
reduce()函数可以累积地将函数作用于各个参数
一个是lambda所定义的函数对象
一个是包含有多个元素的表
作用将前两个元素(1和2)传递给lambda函数,得到3。该返回值(3)将作为lambda函数的第一个参数,而表中的下一个元素(5)作为lambda函数的第二个参数,进行下一次的对lambda函数的调用,得到8。依次调用lambda函数,每次lambda函数的第一个参数是上一次运算结果,而第二个参数为表中的下一个元素,直到表中没有剩余元素。
22、Python中的异常处理
Python中捕获异常的方式:
try:
except exception1:
else:
finally:
如果本层次没有捕获异常,则向上抛出
手动抛出异常:raise

23、Python中的数学库的使用
Python中有很多内建函数
http://python.usyiyi.cn/python_278/library/functions.html
math包主要处理数学相关的运算
常量
math.e # 自然常数e
math.pi # 圆周率pi
基本函数
math.ceil(x) # 对x向上取整,比如x=1.2,返回2
math.floor(x) # 对x向下取整,比如x=1.2,返回1
math.pow(x,y) # 指数运算,得到x的y次方
math.log(x) # 对数,默认基底为e。可以使用base参数,来改变对数的基地。
math.sqrt(x) # 平方根
三角函数: math.sin(x), math.cos(x), math.tan(x), math.asin(x), math.acos(x), math.atan(x)
角度和弧度互换: math.degrees(x), math.radians(x)
双曲函数: math.sinh(x), math.cosh(x), math.tanh(x), math.asinh(x), math.acosh(x), math.atanh(x)

24、Python在数据挖掘方面的优势及相关库
数据挖掘:
R做文本挖掘现在还有点弱,当然它的优点在于函数都给你写好了,你只需要知道参数的形式就行了,有时候即使参数形式不对,R也能“智能地”帮你适应。这种简单的软件适合想要专注于业务的人。
Python几乎都可以做,函数比R多,比R快。但是缺点是比R难学一点。它是一门语言,R更像是一种软件,所以python更能开发出flexible的算法。
(1)Python标准库。这里主要是体现了Python处理字符串的优势,由于Python多功能的属性和对于正则表达式的良好支持,用于处理text是在合适不过的了。
(2)Numpy与Scipy。这两个包是Python之所以能在数据分析占有一席之地的重要原因。其中Numpy封装了基础的矩阵和向量的操作,而Scipy则在Numpy的基础上提供了更丰富的功能,比如各种统计常用的分布和算法都能迅速的在Scipy中找到。
(3)Matplotlib。这个Package主要是用来提供数据可视化的,其功能强大,生成的图标可以达到印刷品质,在各种学术会议里面出镜率不低。依托于Python,可定制性相对于其他的图形库更高。还有一个优点是提供互动化的数据分析,可以动态的缩放图表,用做adhoc analysis非常合适。

(4)符号运算的库:Sympy和Theano

(5)Scikit Learn。非常好用的Machine Learning库,适合于用于快速定制原型。封装几乎所有的经典算法(神经网络可能是唯一的例外,不过这个有Pylearn2来补充),易用性极高。

25、Python中配置安装easy_install和pip

setuptools安装
1、Python的环境变量配置好:系统属性–>高级–>环境变量–>系统变量中path中加入python的安装路径
Python的库路径环境变量配置好:系统属性–>高级–>环境变量–>系统变量中path中加入python\Scripts路径

2、下载setuptools,https://pypi.python.org/pypi/setuptools#files,解压到setuptools目录
3、运行cmd,切换到setuptools目录,输入python setup.py install
4、运行cmd,任意目录可输入:easy_install --showhelp,显示内容则说明easy_install安装成功

pip安装
1、下载pip,解压到pip目录
2、运行cmd,切换到pip解压目录,python setup.py install
3、运行cmd,任意目录可输入:pip help,显示内容则说明pip安装成功

easy_install命令的使用
	安装库:easy_install PackageName
	更新库:easy_install -U PackageName
	删除库:easy_install -m PackageName
	显示帮助:easy_install --showhelp
pip命令的使用
	安装库:pip install PackageName
	更新库:pip install -U PackageName
	删除库:pip uninstall PackageName
	查找库:pip search PackageName
	显示帮助:pip help

如果出现ascii相关的异常:
修改mimetypes.py文件,路径位于python的安装路径下的Lib\mimetypes.py文件。在import下添加如下几行:	
if sys.getdefaultencoding() != 'gbk': 
reload(sys) 
sys.setdefaultencoding('gbk')

26、Python中配置安装Numpy
NumPy系统是Python的一种开源的数字扩展。这种工具可用来存储和处理大型矩阵。
NumPy的功能:
1、一个强大的N维数组对象Array;
2、比较成熟的(广播)函数库;
3、用于整合C/C++和Fortran代码的工具包;
4、实用的线性代数、傅里叶变换和随机数生成函数。
NumPy下载地址:http://sourceforge.net/projects/numpy/files/

常见集中安装方法:
	第一种:在Numpy的官网下载对应系统及python版本的安装exe,直接安装
	第二种:easy_install或者pip进行自动安装
	第三种:在官网下载python源码进行安装,切换目录,输入python setup.py install

numpy安装:运行cmd,切换到numpy目录,python setup.py install
	错误:如果提示 "Microsoft Visual C++ 9.0 is required"
	windows下使用pip安装包的时候需要机器装有vs2008,VS2012不行,或者安装Micorsoft Visual C++ Compiler for Python 2.7的包

	错误:Unable to find vcvarsall.bat”解决办法 
	在python目录中搜索msvc9compiler.py文件,找到如下
	vc_env = query_vcvarsall(VERSION, plat_spec)
	修改为:vc_env = query_vcvarsall(11.0, plat_spec)
	

	错误:RuntimeError: Broken toolchain: cannot link a simple C program 
	在%PythonHome%Lib\distutils下,(默认是C:\Python27\Lib\distutils)修改msvc9compiler.py文件:
	找到如下
	mfinfo = self.manifest_get_embed_info(target_desc, ld_args)
	修改为:		
	mfinfo = None

测试安装完成:python环境中,import numpy,不报错误,print np.array([1,2,3,4]),构造数组

27、Python中配置安装Scipy
SciPy是一个开源的Python算法库和数学工具包。 SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。与其功能相类似的软件还有MATLAB、GNU Octave和Scilab。
Scipy下载地址:http://sourceforge.net/projects/scipy/files/Scipy

scipy安装:使用官网exe,依赖numpy

import scipy不报错即可。
求解方程实例
from scipy.optimize import fsolve
from math import sin,cos

def f(x):
	x0 = float(x[0])
	x1 = float(x[1])
	return [
		2*x1-6,
		4*x0 + x1 -7
	]

result = fsolve(f, [1,1])

print result
print f(result)

28、Python中配置安装Matplotlib
Matplotlib是Python的图形框架,类似MATLAB和R。绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
Matplotlib下载地址:https://pypi.python.org/pypi/matplotlib/

Matplotlib安装:使用官网exe
测试代码
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.ylabel('some numbers')
plt.show()

错误ImportError: No module named six
把C:\Python27\Lib\site-packages\scipy\lib中的six.py six.pyc six.pyo三个文件拷贝到C:\Python27\Lib\site-packages目录下

错误:ImportError: six 1.3 or later is required; you have 1.2.0
https://pypi.python.org/pypi/six/ 下载最新的six版本,解压缩
可以找到six.py six.pyc six.pyo三个文件,然后把它们拷贝到C:\Python27\Lib\site-packages\scipy\lib和C:\Python27\Lib\site-packages(替换原来的文件)

错误:matplotlib requires dateutil
安装:easy_install python-dateutil

错误:matplotlib requires pyparsing
安装:easy_install pyparsing

实例代码:
import numpy as np
import matplotlib.pyplot as plt
 
N = 5
menMeans = (20, 35, 30, 35, 27)
menStd =   (2, 3, 4, 1, 2)
 
ind = np.arange(N)  # the x locations for the groups
width = 0.35       # the width of the bars
 
fig, ax = plt.subplots()
rects1 = ax.bar(ind, menMeans, width, color='r', yerr=menStd)
 
womenMeans = (25, 32, 34, 20, 25)
womenStd =   (3, 5, 2, 3, 3)
rects2 = ax.bar(ind+width, womenMeans, width, color='y', yerr=womenStd)
 
# add some
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind+width)
ax.set_xticklabels( ('G1', 'G2', 'G3', 'G4', 'G5') )
 
ax.legend( (rects1[0], rects2[0]), ('Men', 'Women') )
 
def autolabel(rects):
	# attach some text labels
	for rect in rects:
		height = rect.get_height()
		ax.text(rect.get_x()+rect.get_width()/2., 1.05*height, '%d'%int(height),
				ha='center', va='bottom')
 
autolabel(rects1)
autolabel(rects2)
 
plt.show()

29、Python中配置安装Sympy
SymPy是Python的数学符号计算库,用它可以进行数学公式的符号推导,其功能包括基本的算术,基本简化,一系列扩大,功能(exp, ln, sin, cos, tan, 等),分化,整合(目前只能做很简单的积分),基本替代,任意精度的整数和有理数,标准(Python)的浮点,基本复杂的数字和符号的限制。

Sympy安装地址:https://github.com/sympy/sympy/releases
Sympy安装:使用官网exe

实例代码:
from sympy import Symbol, cos
x = Symbol("x")

print (1/cos(x)).series(x, 0, 10)

30、Python中配置安装Scikit Learn
Scikit-Learn是基于python的机器学习模块,基于BSD开源许可证。Scikit-Learn的安装需要numpy,scipy,matplotlib等模块。Scikit-Learn中的机器学习模型非常丰富,包括SVM,决策树,GBDT,KNN等等。
scikit-learn的基本功能主要被分为六个部分,分类,回归,聚类,数据降维,模型选择,数据预处理。
对于具体的机器学习问题,通常可以分为三个步骤,数据准备与预处理,模型选择与训练,模型验证与参数调优。

官方网站:http://scikit-learn.org/stable/
安装地址:http://sourceforge.net/projects/scikit-learn/files/
下载scikit-learn-0.16.1.win32-py2.7.exe

实例代码:
from sklearn import datasets
iris = datasets.load_iris() #载入测试数据集

print iris.data.shape

31、Python应用领域总结

Python+Django,web开发
Python+wxWidgets,桌面应用
Python适合实现算法,适合数据挖掘算法改进
发布了41 篇原创文章 · 获赞 14 · 访问量 1997

猜你喜欢

转载自blog.csdn.net/qq_43367829/article/details/104810376