python总结

python的面向对象

1.面向对象技术简介
2.类定义
2.类对象
4.类的方法
5.继承
6.方法重写
7.类属性与方法

以上就是python3的面向对象的面向对象的中7个核心特性

以下简单举例几个

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

实例变量:定义在方法中的变量,只作用于当前实例的类。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟”是一个(is-a)”关系(例图,Dog是一个Animal)。

实例化:创建一个类的实例,类的具体对象。

方法:类中定义的函数。

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

和其它编程语言相比,Python 在尽可能不增加新的语法和语义的情况下加入了类机制。

Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。

对象可以包含任意数量和类型的数据。

class UniversityMember:

def __init__(self,name,age):  
    self.name = name  
    self.age = age  

def getName(self):  
    return self.name  

def getAge(self):  
    return self.age  

class Student(UniversityMember):

def __init__(self,name,age,sno,mark):  
    UniversityMember.__init__(self,name,age)     #注意要显示调用父类构造方法,并传递参数self  
    self.sno = sno  
    self.mark = mark  

def getSno(self):  
    return self.sno  

def getMark(self):  
    return self.mark  

class Teacher(UniversityMember):

def __init__(self,name,age,tno,salary):  
    UniversityMember.__init__(self,name,age)  
    self.tno = tno  
    self.salary = salary  

def getTno(self):  
    return self.tno  

def getSalary(self):  
    return self.salary  

我只举例了一个其他的百度都可以得到
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

python的异常处理

1.错误
2.异常定义
3.常见的异常
4. 异常处理的定义
5. 异常处理的意义
6. .如何进行异常处理

下面我只写第6的一个

try:
...some functions...
except Exception as e:
print(e)

常见的异常

  1. NameError:尝试访问一个未申明的变量
  2. ZeroDivisionError:除数为0
  3. SyntaxError:语法错误
  4. IndexError:索引超出范围
  5. KeyError:字典关键字不存在
  6. IOError:输入输出错误
  7. AttributeError:访问未知对象属性
    8.ValueError:数值错误
  8. TypeError:类型错误
  9. AssertionError:断言错误
    11.MemoryError:内存耗尽异常
  10. NotImplementedError:方法没实现引起的异常
  11. LookupError:键、值不存在引发的异常

使用dir函数可以列出所有的异常 然后使用help函数 全是英文的啦

dir(builtins)

使用一个简单例子讲解 try-except抛异常

try:
num1 = int(input('enter the first number'))
num2 = int(input('enter the second number'))
print(num1/num2)
except ValueError as err:
print('请输入数字')
print(err)

try:
num1 = int(input('enter the first number'))
num2 = int(input('enter the second number'))
print(num1/num2)
except ZeroDivisionError as err:
print('请输入数字')
print(err)

以上是使用try except 列出了计算俩个数相除可能抛出的异常

下面是使用多个except子句处理异常

try:
num1 = int(input('enter the first number'))
num2 = int(input('enter the second number'))
print(num1/num2)
except ZeroDivisionError as err:
print('请输入数字')
print(err)
except ValueError as err:
print('请输入数字')
print(err)

使用一个except处理多个异常的例子

try:
num1 = int(input('enter the first number'))
num2 = int(input('enter the second number'))
print(num1/num2)
except (ZeroDivisionError, ValueError) :
print('请输入符合除法规则的数字')
空except
try:
num1 = int(input('enter the first number'))
num2 = int(input('enter the second number'))
print(num1/num2)
except Exception as err:
print(err)

常用的第三方模块 在这部分我们学习的策略是用到了再去学

有常见的requests bs4 等等模块在网络爬虫上的模块

图像处理的第三方模块
PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能

使用PIL 生成一个验证码的例子

生成验证码

from PIL import Image ,ImageDraw,ImageFont ,ImageFilter

import random

def rndChar():
return chr(random.randint(65,90))
def rndColor():
return (random.randint(64,255)),
random.randint(64,255),
random.randint(64,255)

def rndColor2():
return(random.randint(32,127),
random.randint(32,127),
random.randint(32,127)
)

width = 60*4
height = 60
image = Image.new('RGB',(width,height),(255,255,255))

font = ImageFont.truetype('arial.ttf',36)

draw = ImageDraw.Draw(image)

for x in range(width):
for y in range(height):
draw.point((x,y),fill=rndColor())

for t in range(width):
draw.text((60*t +10,10),rndChar(),font= font,fill=rndColor2())

image = image.filter(ImageFilter.BLUR)
image.save('code.jpg','jpeg')
image.show()

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====

nmupy

import numpy as np

a = np.array([12,3,4,5,6]) #
print(a)
print(a[4])
print(a[-1])

切片操作

print(a[1:4:2])
print(a[-3:-1])

对数组元素进行累积和

print(a.cumsum())

matplotlib
能够创建多数类型的图表,如条形图,散点图,条形图,饼图,堆叠图,3D 图和地图图表

下面是使用 matplotlib 创建的一个直方图

import matplotlib.pyplot as plt

plt.bar([1,3,5,7,9],[5,2,7,8,2], label = 'Example one')
plt.bar([2,4,6,8,10],[8,6,2,3,4],label = 'example two ',color = 'g')

plt.legend() #生成默认图例

plt.xlabel('bar number')
plt.ylabel('bar height')

plt.title('hhh')
plt.show()

import matplotlib.pyplot as plt
import numpy as np

添加标题,坐标轴标记和图例

x = np.linspace(0,2 * np.pi,50)
plt.plot(x,np.sin(x),'r-x',label = 'Sin(x)')
plt.plot(x,np.cos(x),'g-^',label = 'Cos(x)')

plt.legend()#展示图例

plt.xlabel('Rads') # 给 x 轴添加标签
plt.ylabel('Amplitude') #给y 轴添加标签

plt.title('sin and cos')
plt.show()

+++++++++++++++++++++++++++++++++++
接下来学习的是 实现的简单爬虫的库

requests BeautifulSoup

首先是使用 pip install requests
pip install BeautifulSoup

Requests 安装的小测

import requests
r = requests.get('http://www.baidu.com')

print(r.status_code)

如果返回的状态码是200 则安装成功

爬虫的基本框架

import requests
def get_html_text(url):
try:
r = requests.get(url,timeout = 30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except Exception as err:
return err

if name == 'main':
url = 'http://www.baidu.com'
print(get_html_text(url))

获取

r = requests.head('http://httpbin.org/get')
print(r.headers)

BeautifulSoup 安装检测

import requests
from bs4 import BeautifulSoup

r = requests.get('http://python123.io/ws/demo.html')
r.encoding = r.apparent_encoding
html =r.text
soup = BeautifulSoup(html,'lxml')
print(soup.prettify()) # 将网页的源代码格式化输出

tag元素的简单用例

import requests
from bs4 import BeautifulSoup

r = requests.get('http://python123.io/ws/demo.html')
r.encoding = r.apparent_encoding
html =r.text
soup = BeautifulSoup(html,'lxml')

print(soup.prettify())

print(soup.title)

tag = soup.a
print(tag.attrs)

分别遍历子孙节点

for child in soup.body.children:
print(child)
for i in range(10):
print('@@@',end='')
for child in soup.body.descendants:
print(child)

下面有一个小例子 爬取中国的排名的爬虫

import requests
from bs4 import BeautifulSoup
import bs4

def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""

def fillUnivList(ulist, html):
soup = BeautifulSoup(html, "html.parser")
for tr in soup.find('tbody').children:
if isinstance(tr, bs4.element.Tag):
tds = tr('td')
ulist.append([tds[0].string, tds[1].string, tds[3].string])

def printUnivList(ulist, num):
tplt = "{0:10}\t{1:{3}10}\t{2:^10}"
print(tplt.format("排名","学校名称","总分",chr(12288)))
for i in range(num):
u=ulist[i]
print(tplt.format(u[0],u[1],u[2],chr(12288)))

def main():
uinfo = []
url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
html = getHTMLText(url)
fillUnivList(uinfo, html)
printUnivList(uinfo, 20) # 20 univs
main()

posted @ 2017-10-26 21:47  tht666tt  阅读(214)  评论(0编辑  收藏  举报