集合
{}如果没有映射关系,那就是集合
集合里所有的元素都是唯一的,无序的
集合知识点
set()工厂函数
如果关注前后问题就不要用set
add()方法,remove()方法
不可变集合:
frozenset
python会将相同的值的哈希函数地址相同,因此1和1.0是一样的
文件
打开文件时 \and/and//都可以,唯独\不可以,因为会转义
f.open默认是rt打开,也急速只读和文本格式
用x打开文件时,如果文件已存在会抛出异常,而w会直接覆盖
**f.close()**关闭文件,在完成写入之后应该立刻关闭文件
**f.read(size=-1)**读取文件size个字符
**f.tell()**告诉当前文件指针(也就是书签)的位置,字节
f.seek(offset,from)在文件中移动文件指针,from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
如果要回到初始位置,就用f.seek(0,0)
若要打印所有的:
for each_line in f:
print(each_line)
f.readline(),一行一行的读
f.write(str)将字符串str写入文件
f.writelines(seq)向文件中传入字符串序列
一个分割对话的小样例
split() 通过指定分隔符对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。
###########
#第一步打开文件
f = open(‘text.txt’)#在一个目录下直接写文件名即可
#open的文件名要加引号
boy =[]
girl=[]
count=1
for each_line in f:
if each_line[:6]!="==":
#如果前6个不是等号就要分割语句
(role,line_spoken)=each_line.split(’:’,1)#人名和说的话保存在元组里
if role’小甲鱼’:
boy.append(line_spoken)
if role’小鱿鱼’:
girl.append(line_spoken)
else:
file_name_boy = 'boy_' + str(count) +'.txt'
file_name_girl = 'girl_' + str(count) +'.txt'#文件名长但好认
boy_file = open(file_name_boy,'w')
girl_file = open(file_name_girl,'w')
boy_file.writelines(boy)#将列表写入文件writelines
girl_file.writelines(girl)
boy = []
girl=[]
count = count +1
boy_file.close()
girl_file.close()
file_name_boy = ‘boy_’ + str(count) +’.txt’
file_name_girl = ‘girl_’ + str(count) +’.txt’#文件名长但好认
boy_file = open(file_name_boy,‘w’)
girl_file = open(file_name_girl,‘w’)
boy_file.writelines(boy)#将列表写入文件writelines
girl_file.writelines(girl)
boy_file.close()
girl_file.close()
f.close
##########
运行结果:OK
其他
模块可以被别的程序引入,以使用模块中的函数功能
OS模块
getcwd()返回当前工作目录
chdir()改变工作目录
os.curdir指代当前目录(’,’)
os.pardir指代上一级目录(’…’)
split(path)分离文件名和路径
splitext(path)分离文件名和拓展名
os.path.join(path,name)连接目录与文件名或目录
泡菜
pickle的使用
应用与一个较大的字典,那么就腌制为泡菜,需要的时候取出来
先定义一个字典city={xxxx}
import pickle
pickle.file = open(“city_data.pkl”,‘wb’)
pickle.dump(city,pickle_file)
常见异常
try-except语句
如果都没有就又回老样子了
try-finally语句
finally:
无论如何都会被执行
比如在finally里面写上f.close()这样必须的语句,就可以避免因为程序异常关闭而在缓冲区没有写入的信息
raise语句引发异常
raise ZeroDiisionError(‘除数为零的异常’)
else语句
如果while里面的语句全部执行完了没有跳出,那么就会执行else语句里面的内容
如果try里面有异常也不会执行else
with语句
可以自己关闭
对象
属性+方法
类以大写字母开头
面向对象编程
封装
继承——子类共享父类
多态
python——中的self
类相当于图纸,类只有实例化之后才是房子
其中的self相当于定位到每一个房子
class Ball:
def setName(self,name):
self.name = name
def kick(self):
print(“我叫%s” % self.name)
在python中定义私有变量仅需在变量名或函数名前加上两个“__”即可