Python基础总结

"""
有时候我们需要将我们保存的文本恢复为一个字典或者序列,Python为此提供了一个pickle包解决此问题;
存放我们叫做pickling;
读取:unpickling;
pkl是pickle简写
"""

import pickle
my_list=[122,23234,'python']
pickle_file = open('my_list.pkl','wb')#使用wb形式
pickle.dump(my_list,pickle_file)#倒入文件,也就是写入文件
pickle_file.close()#关闭文件,执行完此步骤后会生成一个my_list.pkl的二进制文件,可以使用ue打开;

#读取
pickle_file = open('my_list.pkl','rb')#注意是rb
my_list = pickle.load(pickle_file)
print(my_list)#[122, 23234, 'python']
pickle_file.close()
 
my_lsit=['hello']
#assert len(my_lsit)!=1 不等于1时引发异常
try:
    f = open('22.txt')
    f.close()
except OSError as reason:#OSError代表监控哪一类异常
    print('文件出错:'+str(reason))#文件出错:[Errno 2] No such file or directory: '22.txt'
finally:#无论如何此语句都会被执行
    print('这里处理诸如文件没有关闭之类情况,比如关闭文件')

#else语句基本与c相同,但进行了扩展,可以和while,for,异常配合使用,但在循环中只有执行完了循环才会被执行;
#注意for调用和while是相同的
def testFunc(num):
    while num>1:
        if(num%2==0):
            print('未执行完成while')
            break
        print('正常执行完成while')
    else:#也就是说else要执行必须保证while所有代码被执行完成,而不是遇到中途跳出;
        print('执行完while后被执行')
#这里处理诸如文件没有关闭之类情况,比如关闭文件
#执行完while后被执行
testFunc(1)
testFunc(2)#未执行完成while

try:
    int('123')
except ValueError as reason:
    print('出错啦')
else:
    print('运行正常')#这里只有不异常时才会被执行,和循环语句一个道理

#with主要目的是简化运算以及防止某些异常,如:
try:
    with open('22.txt','rb') as f:#局部作用
        print('open')
except:
    print('failed')

class Objectx:#类名大写
    __age__=18#变量默认为公有,如果需要私有则使用两个双下划线
    def name(self,a):#self就是this,表明是哪一个对象在调用方法
        age = a
ob = Objectx()#注意定义方式与c不同。
ob.name(88)
class sun(Objectx):#继承类,y=也可以继承内建库中的类;
    pass

class father():
    def __init__(self):
        pass
class sub(father):#Python支持多重继承
    def __init__(self):
        father.__init__(self)#调用父类构造初始化,这里的self是子类的self,注意不是父类的;但需要指定传递参数
        super().__init__()#自动寻找基类方法进行初始化
s = sub()

#组合
class Tutle:
    def __init__(self,x):
        self.num = x

class Fish:
    def __init__(self,x):
        self.num = x
class Pool:
    def __init__(self,x,y):
        self.tutle = Tutle(x)
        self.fish = Fish(y)
    def print_num(self):#如果不加self,则相当于c的静态函数,调用方式是Pool.print_num()
        print(self.tutle.num,self.fish.num)
p = Pool(1,8)
p.print_num()

#迭代器:序列,字典,python提供了两个内建操作,iter(),next(),next到最后会抛出异常
for i in 'hello':
    print(i)
links={'百度':'wwww.baidu.com',"bing":'wwww.bing.com.cn'}
for i in links:
    print(i,links[i])

class Fish:
    def __init__(self):
        self.a =0
        self.b =1
    def __iter__(self):
        return self
    def __next__(self):
        self.a,self.b=self.b,self.a+self.b
        return self.a

fish =Fish()
for i in fish:
    if i<100:
        print(i)
    else:
        break

#生成器:
def myFun():
    print('excute')
    yield 1#跟return相同,只是函数只是暂时挂起,再次执行时接着之前执行
    yield 2
f = myFun()
next(f)
next(f)

#__main__
#if __name__ == '__main__' 主要是导入模块时防止该模块测试函数被调用
#__name__代表模块的名字,加上此句话表明该模块只被导入不执行;

转载于:https://my.oschina.net/u/4131400/blog/3062845

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值