python学习(六)

异常处理机制

try:
	可能出现异常的程序代码
except (异常类型)BaseException as e:
	发生异常后执行的代码
else:
	未发生异常执行的代码
finally:
	无论是否发生异常,一定会执行的代码
  • 常见异常类型
    1. ZeroDivisionError: 除数为0异常
    2. IndexError: 序列中没有此索引
    3. KeyError:映射中没有此键
    4. NameError: 未声明对象
    5. SyntaxError:python语法错误
    6. ValueError:传入无效的参数
  • Traceback模块
    可以打印异常信息
    Traceback.print_exc()

类与对象

面向过程与面向对象

  • 创建类

    class 类名:
    	pass
    

    类当中有:
    类属性:在变量名前加__后,该属性就变为了私有属性

    变量名 =

    实例方法;

     def 方法名(self):	
     	pass
    

    静态方法; 使用@staticmethod进行修饰的方法

     @staticmethod
     def 方法名():	
     	pass
    

    类方法;使用@classmethod进行修饰的方法

     @classmethod
     def 方法名(cls):	
     	pass
    

    初始化方法;可以对属性进行赋值

     def __init__(self, name, age):
        self.name = name
        self.age = age
    
  • 创建对象
    实例名 = 类名(参数)
    类属性:该类的所有对象都可以进行调用
    类方法和静态方法使用类名直接调用

  • 动态绑定属性和方法
    实例名.想要增加的属性 = 值
    会为这个对象自动加上该属性

    def 方法名():
    	pass
    实例名.方法名 = 方法名
    

    会给这个对象添加上该方法

  • 封装,继承,多态

    1. 若对象中的某个属性不想被外部访问,可以在该属性前加上__让其变为私有属性
      self.__name = name 该name属性外部不可以访问
    2. 继承的语法:
    class 子类类名(父类1,父类2...):
    	pass
    

    子类继承父类后,子类需要在初始化方法中调用父类的初始化方法
    在引用inspect模块后,可以使用inspect.getmro(对象名)来查看类的搜索顺序

    1. 可以通过重写__str__方法使得在输出该对象时,可以直接输出属性,相当于Java中的toString方法
    def __str__(self):
    	return '我的名字是{0},年龄是{1}'.format(self.name, self.age)
    
    1. 多态:只要子类对象继承父类对象,且子类重写了父类的方法,就可以通过传入了继承了父类的子类,让父类来调用该方法
    2. 静态语言和动态语言
      • 静态语言实现多态的三个必要条件:
        继承
        方法重写
        父类引用指向子类对象
      • 动态语言
        不关心对象是什么类型,只关心对象的行为
  • 特殊的方法和属性
    将对象当做一个函数使用需要重写__call__()方法
    特殊的属性和方法
    实例名.__dict__ 得到的是该对象的属性
    类名.__dict__ 得到的是该类的方法

  • 类的深拷贝和浅拷贝

    1. 浅拷贝:
      python中的拷贝一般是浅拷贝,拷贝时,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用一个对象
    2. 深拷贝
      使用copy模块中的deepcopy函数,递归拷贝对象中包含的子对象,源对象和拷贝对象中的子对象也不相同

模块

一个模块中可以包含N多个函数
在python中一个扩展名为.py的文件就是一个模块
使用模块的好处:
	1. 方便其他程序和脚本的导入并使用
	2. 避免函数名和变量名冲突
	3. 提高代码的可维护性
	4. 提高代码的可重用性
  • 导入模块
    import 模块名称 [as 别名]
    from 模块名称 import 函数/变量/类
  • 常用的内置模块
    常用的内置模块

文件的读写操作

  • 创建文件对象,使用内置的open()函数
    file = open(filename [,mode,encoding])
    file:被创建的文件对象
    open:创建文件对象的函数
    filename:要创建或打开的文件名称
    mode:打开模式,默认为只读
    encoding:文件的编码格式,默认为gkb

  • 文件打开模式
    文件打开模式

  • 文件对象的常用方法
    文件对象的常用方法

  • with语句
    可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件的正确关闭,以此来达到释放资源的目的

    with open('a.txt', 'r') as file:
    	print(file.read())
    

    可以不用加文件的关闭操作,在退出with语句时,会自动进行关闭

  • os模块操作目录
    os模块操作目录

  • os.path模块操作目录
    os.path模块操作目录

正则表达式

  • 使用re模块中的compile方法创建一个匹配器
    如:pattern = re.compile('\d{4}')
    创建完匹配器对象后,就可以使用search方法或者match方法去字符串中进行匹配,如匹配到则会返回第一次匹配到的下标位置和值
    如:result = pattern.search(字符串)

  • 或者直接使用模块的match方法或search方法
    result = re.match(匹配器,字符串)即可得到匹配到的值
    result.span()可以得到下标位置
    result.group() 可以得到值

  • 对于分组后的匹配值
    可以使用group(下标)来的到每个分组的值,
    下标为0时,为匹配到的整个字符串
    下标为1时,为匹配到的第一个分组中的字符串

  • 给标签起名
    (?P<名字>正则) (?P = 名字) 成对进行使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值