zoukankan      html  css  js  c++  java
  • 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} {1:{3}10} {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()

  • 相关阅读:
    【小程序开发】基本信息页面源码(头像、二维码上传,省市县地区选择,公司选择,名字输入等)
    【小程序开发】购物车加减几件demo
    【前端开发】面向对象编程案例创建对象
    【前端活动】活动常见形式及案例
    【前端开发】限制input输入保留两位小数
    react-native保存图片Android实现方法
    echarts柱状图宽度设置(react-native)
    echarts饼图字体大小修改
    ATOM常用插件推荐
    echarts柱状图的整体高度怎么设置
  • 原文地址:https://www.cnblogs.com/thttt/p/7730744.html
Copyright © 2011-2022 走看看