• python自动化学习笔记(八)


    一、URL编码

    通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据。对于Url来说,之所以要进行编码,是因

    为Url中有些字符会引起歧义,例如,Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。

    如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行

    编码。又如,Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。否则如果客户端浏

    览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。

    二、异常处理

    异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修复问题。

    在Python中,使用了try/except/finally语句块来处理异常

    1、try..except

    我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except

    后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except

    2、try..finally

    无论异常是否发生,在程序结束前,finally中的语句都会被执行。finally语句也可以和except语句一起使用

    3、raise

    raise关键字后面需要指定你抛出的异常类型,一般来说抛出的异常越详细越好,Python在exceptions模块内建了很多的异常类型,通过使用dir()

    函数来查看exceptions中的异常类型

    关于异常处理总结如下:

    1)except句不是必须的,finally语句也不是必须的,但是二者必须要有一个,否则就没有try的意义了。

    2)except语句可以有多个,Python会按except语句的顺序依次匹配你指定的异常,如果异常已经处理就不会再进入后面的except语句。

    3)except语句可以以元组形式同时指定多个异常,参见实例代码。

    4)except语句后面如果不指定异常类型,则默认捕获所有异常,你可以通过logging或者sys模块获取当前异常。

    5)如果要捕获异常后要重复抛出,请使用raise,后面不要带任何参数或信息。

    6)不建议捕获并抛出同一个异常,请考虑重构你的代码。

    7)不建议在不清楚逻辑的情况下捕获所有异常,有可能你隐藏了很严重的问题。

    8)尽量使用内置的异常处理语句来 替换try/except语句,比如with语句,getattr()方法。

    三、面向对象

    1)面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用

    2)类是一个模板,模板中包装了多个“函数”供使用(把一些函数封装到一个类里面)

    3)对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数

    四、类

    1、Python中的类有经典类和新式类,新式类的属性比经典类的属性丰富。( 如果类继object,那么该类是新式类 ),这两种定义方式在python3

    里面没有任何区别,在python2里面有区别,一般都用新式类定义,新式类定义不写object也无所谓,一般按照规范要求还是写上较好

    2、类的实例化

    对象即实例,实例就是指具体造出来的东西,通过类实例化处理的东西,就是实例,比如下面代码把模型做成实际汽车的过程叫做实例化,中bus

    、bus2、bus3都是实例,通过实例调用类里面的方法bus.run(),对象即实例

    1)定义类的时候,类名的首字母都大写

    2)用类的话,必须得先实例化

    3)在类里面,函数位置写在哪里都无所谓

    3、构造函数

    用于初始化类的内容部状态,类被实例化的时候,它会自动的执行构造函数,Python提供的构造函数式 __init__(),如果你的类在实例化的时候要

    传入一些参数,那么你就要在__init__这个函数里写参数了,如果你的类在实例化的时候要传入一些参数,那么你就要在__init__这个函数里写参数

    了,比如bus = Car('黄色','3开门')实例化的时候要传入'黄色'、'3开门'这两个参数,def __init__(self,color,window)这里就得写两个参数,构造函数

    就是传参用的

    4、析构函数

    “__del__”就是一个析构函数了,实例被销毁的时候执行的。程序运行完改程序的所有变量都不在内存里面,会执行这个析构函数,析构函数是

    python底层实现的,和你自己写的代码没有任何关系,只要变量不在内存里面,python就会执行析构函数。那什么时候能用到析构函数呢,比如

    mysql关闭连接,如果定义成def close():那么每次连接数据库都要调用下这个close()函数,如果定义成def __del__():那么每次数据库操作完会自

    动系统调用这个函数,就不需要每次手动调用了

    5、属性和方法

    属性即类里面的普通变量,还有一种在方法上应用装饰器即为属性@property。比如coon和cur即为属性方法即类里面的函数

     6、self的含义

    self其实就是传入的实例名,用bus调用方法是,self就是bus,用bus2调用方法时self就是bus2。只要定义函数时有self,就可以使用self.

    7、实例变量和类变量

    实例变量。必须实例化时候才能用,实例变量也称为成员变量,能用self.出来变量都是实例变量,在方法外,类里面定义的变量是类变量,一般

    公用的属性可以定义成类变量,用的时候也可以通过实例名.类变量名的方法使用

     8、属性方法

    属性方法:看上去好像是一个属性,其实是一个函数,也得实例化才能调用。属性方法不能入参。如果一个方法没有入参的话,在方法上面加上一个

    @property,就可以把该方法变成属性方法

    9、私有函数和私有变量

    只要是私有的东西,不管是私有函数还是私有变量,函数和变量前面加上__表示私有函数和变量。只有在类里面可以使用,类外面不能被使用。

     

    10、继承

    父类有的功能、变量子类全有。如果定义的类,有很多重复功能的,那就可以把这些重复的类,定义成父类

     11、多态

    多态的思想就是一种方法,多种实现,python不支持多态,Python里面函数名不能重复,但是java里面函数名是可以重复的,比如定义个三个相同

    的方法,但是方法里面参数个数不同,在函数调用时会根据传入的参数个数来决定调用那里方法

    12、类方法和静态方法

    静态方法:不需要实例化,和类没有任何的关系,类里面的其他东西它也用不了,只是写在类里面的一个普通函数而已

    类方法:不需要实例化,直接类名.XX,它可以使用类变量

     

    实例方法,必须实例化才能用的方法,直接辨别就是参数使用了self的就是实例方法

    13、修改父类方法

    修改父类方法有什么作用呢,最主要的作用是节省代码,比如一个函数文件中好几个类,但是都需要连接同一数据库,那么数据库的ip,user,passwd,port

    就可以公用,把这些实例变量放到父类里面去定义,子类里面直接调用即可,不需要再重新定义一遍。修改父类的方法有两种,一种是直接手动调用父类的

    方法,还有一种是使用super,super会自动找到父类,然后调用下面的方法

    五、发邮件

    1)在邮箱设置里面打开pop3/smtp服务

    2)有的邮箱用密码发送不了,必须得获取授权码才可以。

     

    发附件

  • 相关阅读:
    compass 制作css sprites
    net模块
    javascript -- 代理模式
    javascript -- 单例模式
    js 对象的浅拷贝和深拷贝
    js 对象的封装,继承,多态的理解
    this,call,apply
    flex 实现圣杯布局
    ubuntu中安装mongodb
    devDependencies和dependencies的区别
  • 原文地址:https://www.cnblogs.com/luoqingqing/p/8439404.html
Copyright © 2020-2023  润新知