python基础知识整理2

python基础知识整理接上篇。

11 集合

1 集合具有唯一的作用,不能重复。
2 集合是无需的。
num={1,2,3,4,5,5,5,5,5,5,5}
输出num:{1,2,3,4,5}
Set1 = set([1,2,3,4,5])

11.1 增加删除

Set1.add() 集合增加
Set1.remove() 集合删除

11.2 定义不可变集合

frozen:冰冻的
Set1=frozenset([1,2,3,4,5])
定义之后不能使用添加删除等操作否则报错

12 文件

打开模式 执行操作
‘r’ 以只读方式打开文件(默认)
‘w’ 以写入的方式打开文件,会覆盖已存在的文件
‘×’ 如果文件已经存在,使用此模式打开将引发异常
‘a’ 以写入模式打开,如果文件存在,则在末尾追加写入
‘b’ 以二进制模式打开文件
‘t’ 以文本模式打开(默认)
‘+’ 可读写模式(可添加到其他模式中使用)
‘u’ 通用换行符支持

12.1 文件对象方法

在这里插入图片描述

12.1.1 打开文件

open(文件路径)
f=open(“E:\7.python\day1\know.txt”)

12.1.2 读取文件

print(f.read())
f.read(num)读取num个字符

12.1.3 返回当前文件中的位置

f.tell() 获取总字节 一个中文等于2字节

12.1.4 seek(offset,from)

f.seek(45,1)
在文件中移动文件指针,从from ( 0代表文件起始位置,1代表当前位署2代表文件末尾)偏移offset个字节

12.1.5 readline()

以写入模式打开,如果文件存在,则在末尾追加写入

12.1.6 write()

生成一个文本text内容

f=open("E:\\test.txt",'w')
print(f.write('You jume,I jump!'))
f.close()

12.1.7 readline() readlines()

f.readline() 只读取一行
f.readlines 将txt的内容转为列表

分割文件案例

将英文,中文分隔开成2个文件,china1.txt,english1.txt。
每段的分界线为======······ 分界线下面为china2.txt,english2.txt
Know.txt内容为:
在这里插入图片描述

f=open("know.txt")
china=[]
english=[]
count=1
 #分割封装
def splitMsg(i):
    # 文件分割  left为 ‘:’ 左边的内容  同理右边
    (left, right) = i.split(":")
    if left == 'you':
        china.append(right)
    if left == 'i':
        english.append(right)
 # 封装保存的文件
def splitFile(strName,fileName):
    # 保存的文件名字
    Name=open( strName + str(count) + '.txt', 'w')
    Name.writelines(fileName)
    Name.close()
for i in f:
    # 切片取前6位
    if i[:6] != "======":
        splitMsg(i)
    else:
        splitFile('english',english)
        splitFile('china', china)
        # 保存文件后清空列表
        china=[]
        english=[]
        count+=1

13.模块

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块可以被别的程序引入,以使用该模块中的函数等功能,使用import引入。

os模块中关于文件/目录常用的函数使用方法

在这里插入图片描述
os.system使用方法:(关机)
os.system(‘shutdown -s -t 0’)

os.path模块

在这里插入图片描述
gettatime getctime getmtime
在这里插入图片描述
在这里插入图片描述

使用方法: (单独返回函数的文件名字)
os.path.basename(“moudle.py”)

pickle模块 本地储存

使用pickle模块可以存放一些数据到指定目录,只要不删除,他将会永久存在 。

存放

import pickle
myMsg={
    'name':'jack',
    'age':'22',
    'say':'i love you,rose.'
}
pickFlie = open("mymsg.pkl",'wb')
pickle.dump(myMsg,pickFlie)
pickFlie.close()

读取

import pickle
pickFile = open('mymsg.pkl','rb')
mymsg=pickle.load(pickFile)
print(mymsg)

14.异常处理

14.1几种常见的错误类型

1.AssertionError 断言语句(assssert)失败

例如:

list=[]
assert len(list)>1

2.AttrebuteError尝试访问未知对象的属性 没有这个属性

例如:

Arr={}
print(Arr.name)

3.IndexError 索引超出序列范围

例如:

list=[1,2,3]
print(list[3])

4.KeyError字典中查找一个不存在的关键词

dicts={
    'name':'Lisa',
    'age':28
}
print(dicts['say'])

4.NameError 尝试访问一个不存在的变量

例如:
Print(notUndefined)

5.IndentationError 缩进错误

缩进不够4字符,就会报错,建议缩进的时候使用TAB键

6.OSErroe 操作系统产生异常(例如打开一个不存在的文件)

7.TypeError 类型错误

例如:
print(1+’1’)

8.ZeroDivisionError 除数为0

print(5/0)
更多错误访问 https://fishc.com.cn/thread-45814-1-1.html 查看

14.2异常处理方法

14.2.1 解决一:try-except语句

try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码
例如:

try:
    f = open('这是文件啊.txt')
    print(f.read())
    f.close()
except OSError as reason:
    print("文件出错了 错误原因"+str(reason))
处理多个异常的方法
1.第一写法:写多个export进行处理
try:
    sum=1+'1'
    f = open('这是文件啊.txt')
    print(f.read())
    f.close()
except OSError as reason:
    print("文件出错了 错误原因"+str(reason))
except TypeError as reason:
    print("文件出错了 错误原因"+str(reason))
2.第二个写法:在()中把错误错误类型写进来
try:
    sum=1+'1'
    f = open('这是文件啊.txt')
    print(f.read())
    f.close()
except (OSError,TypeError) as reason:
    print("文件出错了 错误原因"+str(reason))

在这里插入图片描述

14.2.1 解决二:try-finally语句

try:
检测范围
except Exception[as reason] :
出现异常(Exception)后的处理代码
finally:
无论如何都会被执行的代码

try:
    f = open('这是文件啊.txt','w')
    f.write('这是一个TXT文件')
    sum = 1 + '1'
    f.close()
except TypeError as reason:
    print("文件出错了 错误原因"+str(reason))
finally:

    print("不管你报不报错,我继续执行")

在这里插入图片描述

15 丰富的else语句以及简洁的with语句

15.1 else语句

else语句不仅仅可以与if连用 还可以与try-excpet语句,while语句等连用

例如:

15.1.1 try-except语句中使用

try:
    int('abc')
except ValueError as reason:
    print('出错啦: ' + str(reason))
else:
    print( '没有任何异常! ')

15.1.2 while语句中使用

a=input("输入一个数子")
while int(a)>5:
    print("数字大于5")
else:
    print('数字小于等于5')

15.2 with语句

一般情况下,我们走着这么做处理:

f=open('这是文件啊.txt')
print(f.read())
f.close()

这样错它存在两个问题:

  1. 如果在读写时出现异常而忘了异常处理。
  2. 忘了关闭文件句柄
    with后面接的对象返回的结果赋值给f。此例当中open函数返回的文件对象赋值给了f;with会自已获取上下文件的异常信息。
    使用with有更优雅的写法:
with open('test.txt') as f:
    print(f.read())

16 图形界面入门编程EasyGui

16.1安装方法:

1.直接安装 pip install easygui
安装完后可以使用 pip list 查看是否安装成功
2.到官方安装:http://easygui.sourceforge.net
下载easygui-0.97.zip,解压到任意地方
找到easygui.py,拷贝进电脑Python安装目录下的Lib\site-packages文件夹下
打开IDLE,import easygui,回车,如果没报错,那就是成功了。

16.2 使用方法与部分基本操作。

引入方法,那种都行。
1.from easygui import *
2.import easygui

easygui.msgbox("Hello World!")

3.import easygui as g

g.msgbox('Hello World!')

16.2.1 msgbox(message,title,button,image)

会出现一个弹出框,提供一个ok按钮,
会出现一个选择框,第一个参数为输出的内容message。
第二个为标题title,
第三个为选择的按钮button,默认为ok
第四个为图片image

import easygui as g
g.msgbox('你想做什么','选择框',('玩游戏','敲代码'),'./loge.png')

16.2.2 ccbox(message,title,button,image) ynbox(message,title,button,image)

两个用法一样,都会出现一个选择框。内容同上

g.ccbox('你想做什么','选择框',('玩游戏','敲代码'),'./loge.png')

16.2.3 buttombox(message,title,button,image)

可以自己定义一组按钮

g.buttonbox('你喜欢那个水果?','选择',('火龙果','山竹','荔枝'))

在这里插入图片描述

16.2.4 indexbox(message,title,button,image)

与按钮类似,返回的是下标,从0开始,第一个按钮返回下标0,第二个按钮返回1,以此类推。

16.2.5 boolbox(message,title,button,image)

按钮默认为True和false,点击true返回1,否则返回0

16.2.6 boolbox(message,title,choices)

提供了一个可选择的列表,使用序列(元祖或列表)作为选项,这些选项显示前会按照不区分大小写的方法排好序。

choicessList = ["火龙果", "山竹", "荔枝", "霸王果"]
g.choicebox('你喜欢吃那个水果','吃水果',choices=choicessList)

在这里插入图片描述

16.2.7 multchoicebox(message,title,choices)

与boolbox类似,也是提供一个可选择的列表,支持选择多个选项。

16.2.8 enterbox(message,title,default,strip,image)

为用户提供一个最简单的输入框,返回值为用户输入的字符串。
default为默认说的话。
strip为是否保留首尾空格值为True/false
在这里插入图片描述

16.2.9 interbox(message,title,default,lowerbound,upperbound,image)

提供一个简单的输入框,只能输入范围内的数值,否则会重新输入。
lowerbound参数设置最小值,upperbound参数设置最大值

16.2.10 mulenterbox(message,title,fields,values)

为用户提供多个简单的输入框。取消操作返回None

g.multenterbox("msg",'title',['反馈内容','你的名字','你的qq'],['你好我不反馈','liability','admin'])

在这里插入图片描述

16.2.11 passwordbox(message,title,default,image)

passwordbox() 跟 enterbox() 样式一样,不同的是用户输入的内容用"*"显示出来。

16.2.12 passwordbox(message,title,default,image)

显示一个密码框,内容显示为’***’

16.2.13 multpasswordbox(message,title,fields,values)

内容为输入框,最后一个输入框为密码。

g.multpasswordbox("msg",'title',['qq','密码'],['admin','liability'])

在这里插入图片描述

16.2.14 textbox(message,title,text,codebox)

函数默认会以比例字体(参数 codebox=1 设置为等宽字体)来显示文本内容(会自动换行哦),这个函数适合用于显示一般的书面文字。 text 参数(第三个参数)可以是字符串类型,列表类型,或者元祖类型。

17 对象

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。

17.1 面向对象编程

17.1.1创建类

使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾: self相当于this指向

class BigBox:
    def fn1(self,name):
        self.name=name
    def say(self):
        print('我是',self.name,',我喜欢唱歌')
a=BigBox()
a.fn1("鲤鱼ovo~")
a.say()

17.1.2 python的魔法方法 init(self)

定义类的时候,若是添加__init__方法,那么在创建类的实例的时候,实例会自动调用这个方法,一般用来对实例的属性进行初使化。

class BigBox:
    def __init__(self,name):
        self.name=name
    def say(self):
        print('我是',self.name,',我喜欢唱歌')
b=BigBox('拉萨pvq~')
b.say()

17.1.3 公有私有

共有:可以公开使用,既可以在类内部访问,也可以在类外部访问。
私有:只能在类内部使用,在Python中定义私有变量只需要在变量在Python中定义私有变量只需要在变量”__“两个下划线那么这个函数或变量就会为私有的了。
直接访问内部名字就会报错例如:

class Person:
    __name='拉斐obb_',
    def getName(self):
        return print(self.__name)
p=Person()
print(p.__name) 

在这里插入图片描述

但也可以通过特殊的方法进行访问,即"对象名._类名+私有成员"
print(p._Person__name)

17.2 继承

语法:
class DerivedClassName ( BaseClassName) :
DerivedClassName:子类
BaseClassName:基类、父类或超类
例子:

class parent:
    def say(self):
        return print("一山更比一上高")
father = parent()

class child(parent):
    pass
son = child()
son.say()

输出:一山更比一上高
如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性,但不会修改父级的方法。

class parent:
    def say(self):
        return print("一山更比一上高")

father = parent()
class child(parent):
    def say(self):
        return print("一树更比一树绿")
son = child()
son.say()
father.say()

在这里插入图片描述

多重继承:

class DerivedClassName (Base1,Base2,NBase3) :
与上述继承用法一样,不过可以继承多个方法。

17.3 组合

对象的组合又叫嵌套或建模,是通过不同类之间的对象相互赋值完成的.
例如:

class changeX:
    def __init__(self,x):
        self.x = x+1
class changeY:
    def __init__(self,y):
        self.y = y+1
class Change:
    def __init__(self,x,y):
        self.cx=changeX(x)
        self.cy=changeY(y)
    def print_num(self):
        print(f'x的位置是{self.cx.x},y的位置是{self.cy.y}')
Change=Change(1,10)
Change.print_num()

17.4 对象相关的一些BIF(Built-in Functions(内置函数))

17.4.1 issubclass(class, classinfo)

1.class,一个类被认为是其自身的子类
2.classinfo可以是类对象组成的元祖,只要class与其中任何一个候选类的子类,则返回True
例如:

class A:
    pass
class B(A):
    pass
print(issubclass(B,A))

返回:
在这里插入图片描述

17.4.2.isinstance(object, classinfo)

如果第二个参数不是类或者由类对象组成的元祖,会抛出一个TypeError异常

17.4.3 hasattr(object, name)

检测object是否拥有name这个属性或者方法,如果有就返回True否则返回false

17.4.4 getattr(object, name[, default])

获得object的name的属性值,如果存在打印出来,如果不存在,打印出默认值,默认值可以更改。

class A:
    age:18
print(getattr(A,"name",'属性不存在···'))

在这里插入图片描述

17.4.5 setattr(object, name, values)

给对象的属性赋值,若属性不存在,先创建再赋值。

class A:
    age:18
setattr(A,"name",'鲤鱼obb~')
print(getattr(A,'name'))

在这里插入图片描述

17.4.6 delattr(object, name)

delattr 函数用于删除属性,有就删除没有就抛出异常。

17.4.7 property( fget=None, fset=None, fdel=None,doc=None)

property() 函数的作用是在新式类中返回属性值。
fget:获取属性值的函数
fset:设置属性值的函数
fdel:删除属性值函数
doc :属性描述信息

 class C:
    def __init__(self,x=10):
        self._x = x
    def getx(self):
        return self._x
    def setx(self, value):
        self._x = value
    def delx(self):
        del self._x
    x = property(getx, setx, delx)
c=C()
c.setx(20)
print(c.getx())# 输出:20
c.delx() #删除x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hope°

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

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

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

打赏作者

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

抵扣说明:

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

余额充值