当前位置: 首页 > news >正文

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)有的邮箱用密码发送不了,必须得获取授权码才可以。

 

发附件

 

转载于:https://www.cnblogs.com/luoqingqing/p/8439404.html

相关文章:

  • 毕业设计记录(四)一个form里有两个image的input提交按钮,servlet咋处理?
  • 关联容器
  • Hibernate注解方式的抓取策略
  • GNU gcc package link
  • 你不知道的JavaScript-原型
  • socket编程入门教程(三)TCP原理:5、TCP的三次握手three-way handshake
  • 构建二叉树进行数值数组的去重及优化
  • MySQL 存储引擎
  • 组件化方案调研
  • Android ListView 长按列表弹出菜单
  • 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求...
  • Android平台游戏开发引擎使用指引
  • android获得ImageView图片的等级
  • 自动作文评分
  • 运维生产环境常用脚本
  • Angular 4.x 动态创建组件
  • Java,console输出实时的转向GUI textbox
  • JavaScript 基本功--面试宝典
  • JavaScript 基础知识 - 入门篇(一)
  • Making An Indicator With Pure CSS
  • node-glob通配符
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Selenium实战教程系列(二)---元素定位
  • text-decoration与color属性
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 通过几道题目学习二叉搜索树
  • 消息队列系列二(IOT中消息队列的应用)
  • 小程序测试方案初探
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • #pragma 指令
  • #每天一道面试题# 什么是MySQL的回表查询
  • $.ajax中的eval及dataType
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (30)数组元素和与数字和的绝对差
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (南京观海微电子)——COF介绍
  • (转)memcache、redis缓存
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • .gitignore
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net 无限分类
  • .NET下ASPX编程的几个小问题
  • .Net小白的大学四年,内含面经
  • .pop ----remove 删除
  • /dev下添加设备节点的方法步骤(通过device_create)
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [ai笔记4] 将AI工具场景化,应用于生活和工作