Python知识点回顾二

Python基础篇六至十节

本文章是关于六至十节的易忘的内容,相较于一至五节内容偏多。
Python基础篇一至五节

六、文件

1.文件的打开关闭

file_one = open('a','b')	#a:文件名称,b:文件的打开模式

常见的文件打开模式有:

  • r:只读
  • w:只写,但在该模式下每次打开文件,都会清空之前的内容!!
  • a:追加
  • b:以二进制的形式打开
  • +:更新(读和写)
file_one.write('this is python')									#一次只能写一个。
flie_one.writelines('hello,python\n','I heart you\n','day day up')	#一次写入多行内容
file_one.flush()													#保存内容到文件
file_one.close()													#关闭文件也会自动修改到文件中去

注:这只是写入到内存里去,并不是文件中,关闭文件时一定要记得保存!!

2.文件的读取

file_one = open('text.txt','r+')#首先要打开文件
file_one.read()					#读取文件
file_one.readline()				#读取文件中的一行
file_one.readlines()			#读取文件中的多行

文件的读取的便捷形式
在这里插入图片描述

每次打开文件都需要关闭,但是使用with可以自动关闭文件

3.文件的目录操作

import os
os.getcwd()				#获取当前路径
os.chdir('a')			#切换路径,a:表示的是路径名	
os.listdir(path='.')	#查看子目录
os.mkdir('file')		#创建以file为名的文件夹
os.rename('file','new') #更改文件名

其他方法如下
在这里插入图片描述

4.路径

from datatime import datatime as dt	#文件导入
if  __name__=='__main__':    		#对于测试核心代码有很大帮助

七、面向对象初级

1.类的基本

class Person():			#类的定义
	def __init__(self,name,age,sex='0'):
		self.name = name
		self.age = age
		self.sex = sex
	def play(self):
		print(f'{self.name}正在看电视'
bd = Pesron('一个',18)	#实例化
bd.name					#一个
bd.play()				#一个正在看电视
  • self是实例自己,在该例子中也就是bd
  • __init__是初始化函数,实例初始化时自动调用
  • 通过.来进行属性和方法的操作
    在这里插入图片描述

2.类的继承与重用

  • 多重继承会有顺序
  • 类继承后,若想调用父类的方法有两种方式
Preson.play(self)	#方法一
super().play()		#方法二

八、面向对象高级

1.内置函数

ks = HunXue('空山',18)
hasattr(ks,'name')  		#判断属性是否存在
getattr(ks,'name')			#有则得到属性值,无责报错
setattr(ks,'name','空空')	#设置属性值
delattr(ks,'name')			#删除属性值
hasattr(ks,'name') 
True
'空山'
'空空'
False

属性调用过程
在这里插入图片描述

2.魔法方法

这个魔法方法和下面的协议对于初学者有一点难理解。

1. 单例模式

#单例模式,只有一个实例存在,不会有多个实例。
class Earth():
def __new__(cls):
	if not hasattr(cls,'_instance'):
		cls._instance=super().__new__(cls)
	return cls._instance
def __init__(slef):
self.name = 'earth'
def  __str__(self): 				#用来改变print打印时的样子
def  __repr__(self): 				#用来改变直接打印时的样子	

3.协议

1.序列协议

class IndexTuple:
	def __init__(self,*args):
		self.values = tuple([x for x in args])
		self.index = tuple(enumerate(self.values))
	def __len__(self):
		return len(self.values)
	def __getitem__(self,key):
		return self.index[key]
	def __repr__(self):
		return str(self.values)
my = IndexTuple(1,'a','b',3,5)
len(my)			#5
my[1]			#'a'

2.迭代器协议

class Number:
	def __init__(self,end=10):
		self.start = 0
		self.end = end
	def __iter__(self):
		return self
	def __next__(self):
		self.start += 1
		if self.start >= self.end:
			raise StopIteration
		return self.start
nu = Number()	
next(nu)
next(nu)
1
2

注:只要实现了__iter__和__next__方法,就是迭代器。
3.上下文协议

import time
class RunTime:
	def __enter__(self):
		self.start_time = time.time()
		return self.starttime
	def __exit__(self,a,b,c):
		self.end_time = time.time()
		self.run_time = self.endtime-self.start_time
		print(f'Time consuming {self.run_time}'

在这里插入图片描述

九、生成装饰器和异常

1.生成器

def fibona(end):
	n,a,b=0,0,1
	while n<end:
		a,b = b,a+b
		yield b
		n += 1
a = fibona(10)
next(a)
1
  • 利用yield可以让一个函数变成一个迭代器
  • yield拥有与return一样的功能,可以返回值
  • 但会暂停函数的执行,直到下一次next()执行

2.装饰器

在不改变函数的前提下,给函数增加功能。

#语法格式
def 装饰器函数名(参数):
	def 功能函数名():
		功能
	return 功能函数名
#使用装饰器
在定义的函数前加@装饰器函数名
def variables(func):
	def f(*args,**kwargs):
		print(args,**kwargs)
		values = func(*args,**kwargs)
		return values
	return f
@variables
def f1(end):
	return end+1

装饰器执行步骤

  1. 将f1这个函数作为参数传给func,f1=func
  2. 执行f()函数,end传入到*args里面
  3. 如果想实现函数本身的功能,则在f中加入func()

三种内置装饰器
内置装饰器

yige = Person()
yige.play					#property装饰器
yige.eat()                	#classmethod装饰器
yige.sleep() 				#staticmethod装饰器
一个正在玩游戏,哈哈哈~~~
<class '__main__.Person'>需要学习,emm~~~
人都需要睡觉

3.异常

语法规则

try:
	pass 				#可能出现异常的代码
except Exception:
	raise Exception		#抛出异常或者返回异常
else:
	pass				#没有报错就会执行
finally:
	pass				#以上执行完就会执行这个

注:

  • try后必须跟上except
  • except只有在函数中才能使用return
  • finally不管是否发生异常都会执行
  • raise主动抛出异常

assert:断言,与if类似,只是判断为False时,会报错。

十、正则

1.元字符

在这里插入图片描述

2.通配符

import re
phone = input('请输入手机号')
re = findall(r'^13\d{9}$',phone)
  1. ^表示的是开头,$表示的是结尾,r取消字符串转义

  2. re.findall()获取所有符合规则的内容,并返回到列表中去。
    在这里插入图片描述

  3. .可以匹配任意字符,但在没有规定匹配次数的前提下,只能匹配一个。

  4. 正则默认是一行一行匹配的

  5. 加入参数re.S后就会所有一起匹配

3.转义符

在这里插入图片描述
在这里插入图片描述

4.次数匹配

在这里插入图片描述

1.第一个为最小次数,第二个为最大次数
2.一个默认为最大次数
3.从1次起
4.0次到2次

在这里插入图片描述

1.0次到多次
2.1次到多次
3.0次到1次

5.贪婪匹配与非贪婪匹配

在这里插入图片描述

6.集合

在这里插入图片描述
注:

  1. 匹配r或者e
  2. 匹配0-9之间的任意一个数字或者a-z之间的任意一个字母
  3. 不匹配a-z里面的任何一个
  4. 匹配一个字的中文
  5. 匹配两个字的中文

7.分组匹配

在这里插入图片描述
在这里插入图片描述

8.re模块

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Indra_ran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值