Python(day6)

打开文件

在这里插入图片描述

open

open(name[, mode[, buffering]])

  1. name : 一个包含了你要访问的文件名称的字符串值。
  2. mode : mode 决定了打开文件的模式,默认为r。
  3. buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

-

文件对象方法

  1. f.close() :关闭文件
  2. file.read([size]):从文件读取size个字符,当未给定size或给定负值时,读取剩余的所有字符,然后作为字符串返回,f.read()读到文件尾时返回""(空字串)
  3. file.readline():以写入模式打开,若文件存在,则在末尾追加写入。
  4. f.write(str):如果要写入字符串以外的数据,先将其转换为字符串。
  5. f.seek(偏移量offset,[起始位置from]):用来移动文件指针。从from(0代表文件起始位置,1代表当前位置,2代表文件末尾),偏移offset个字节。
  6. f.writelines(seq):向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象。
  7. f.tell():返回当前在文件的位置

-

pickle模块

为了让用户在平常的编程和测试时保存复杂的数据类型,python提供了标准模块,称为pickle.
这个模块可以将几乎任何的python对象(甚至是python的代码),转换为字符串表示,这个过程称为pickling.
而要从里面重新构造回原来的对象,则称为unpickling.
在pickling和unpicking之间,表示这些对象的字符串表示,可以存于一个文件,也可以通过网络远程机器间传输。

如果你有一个对象friend,和一个已经打开并用于写的文件对象f,pickle这个对象最简单的方式就是使用:

pickle.dunmp(friend,f)
# Pickle模块读入任何Python对象,将它们转换成字符串,
然后使用dump函数将其转储到一个文件中——这个过程叫做pickling。

迭代打印文件对象的每一行数据:

for each in f:
	print(each)

-

Exception 异常

在这里插入图片描述

异常检测

  1. try-except语句
    try:
    检测范围
    except Exception [as reason(变量] : #可同时写多个异常)
    出现异常(Exception)后的处理代码
    eg:print(‘错误原因’+str(reason))
  2. try-finally语句
    try:
    检测范围
    except Exception [as reason]:
    出现异常(Exception)后的处理代码
    finally:
    无论如何都会被执行的代码
    eg:f.close() (关闭文件)

-

raise语句

当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。

try:
	s = None
	if s is None:
		print('s 是空对象')
		raise NameError
		print len(s)
exception TypeError:
	print('空对象没有长度')		

-

else语句

  1. 与if配合使用
  2. while,for(若无break,else会执行)
  3. 异常处理搭配,若无出现异常,会执行else语句内容

-

with语句

对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源(会自动关闭文件)

-

EasyGui

导入EasyGui

import easygui		#使用EasyGui函数时,必须在函数的前面加上前缀
	easygui:
		easygui.msgbox(...)

2.导入整个EasyGui包:

from easygui import *
	easygui.msgbox(...)	#直接编写代码
import easygui as g:
	g.msgbox(...)

使用EasyGui,建议不要在IDLE上运行,可能会发生冲突

-

对象 = 属性 + 方法

属性:静态(特征等)
方法:动态(一个个函数)

-

python中类的命名约定为以大写字母开头
eg:

class One:

-

面向对象(oo) = Object Oriented

面向对象编程(oop)

面向对象 特征:封装、继承、多态
封装:信息隐蔽技术
继承:子类自动共享父类之间数据的方法和机制
多态:不同对象对同名方法响应不同的行动

继承:

>>>class Mylist(list):
	pass
>>>list2 = Mylist()
>>>list2.append(5)
>>>list2.append(3)
>>>list2.append(7)
>>>list2
>>>[5,3,7]
>>>list2.sort()
>>>[3,5,7]		#Mylist这个类继承了list方法

多态:

>>>class A:
	def fun(self):
		print('A')
>>>class B:
	def fun(self):
		print('B')
>>>a = A()
>>>b = B()
>>>a.fun()
>>>A
>>>b.fun()
>>>B		#a,b调用同名的方法,但实现不一样,体现多态 				

-

self

self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
每个实例对象都有唯一的self参数

  1. self在定义时需要定义,但是在调用时会自动传入。
  2. self的名字并不是规定死的,但是最好还是按照约定是用self
  3. self总是指调用时的类的实例。
    理解:同一类中,创造多个函数,self分别命名每个函数,实现不同效果

-

__ init__ (self)

class Word:
	def __init__(self,name):
		self.name = name
	def kick(self):
		print('是%s' % self.name)
>>>b = Word('单词')
>>>b.kick()
>>>是单词		

-

公有、私有属性

属性和方法公有

>>>class Num:
	name = 'one'
>>>p = Num()
>>>p.name
>>>one	

私有属性:
python并没有真正的私有属性
用__定义的属性,只是被改名换姓而已
用_定义的属性,意义在于唤起用户的注意,看成私有属性

>>>class Num:
	__name = 'one'
>>>p.Num()
>>>p.__name
>>>p.name	#会报错	

改为:

class Num:
	__name = 'one'
	def getName(self):
		return self.__name
>>>p.getName()
>>>one
>>>p._Num__name	#_类名__变量名
>>>one		

-

继承

若子类与父类同名,会覆盖子类里父类的方法,子类对象调用的时候调用到覆盖后的新属性或方法,但对父类不受影响

class DerivedClassName子类(BaseClassName父类)
class Parent:
	def hello(self):
		print('正在调用父类方法')
class Child(Parent):
	pass
>>>p = Parent()
>>>p.hello
>>>正在调用父类方法
>>>c = Child()
>>>c.hello()
>>>正在调用父类方法			

-

super()

不需要明确给出任何基类的名字,它会自动帮你找出所有基类以及对应的方法。由于你不用给出基类的名字,这就意味着你如果需要改变类继承关系,你只需要改变class语句里的父类即可,而不必在大量代码中去修改所有被继承的方法。

-

多重继承

class DerivedClassName(Base1,Base2,Base3):	#Base:多个父类名
class Base1:
	def fo1(self):
		print('1')
class Base2:
	def fo2(self):
		print('2')
class C(Base1,Base2)
	pass
>>>c = C()
>>>c.fo1()
>>>1
>>>c.fo2()
>>>2
#缺点:易导致代码混乱				

-

类相关的BIF

issubclass(class,classinfo)

isinstance(object,classinfo)

-

访问对象属性

  1. hasattr(object,name) #attr =attribute 属性
  2. getattr(object,name[,default])
  3. setattr(object,name,value)
  4. delattr(object,name)

-

property(fget = None,fset =None,Fdel = None,doc=None )

通过属性设置属性

  1. fget – 获取属性值的函数
  2. fset – 设置属性值的函数
  3. fdel – 删除属性值函数
  4. doc – 属性描述信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值