Python基礎總結

"""
有時候咱們須要將咱們保存的文本恢復爲一個字典或者序列,Python爲此提供了一個pickle包解決此問題;
存放咱們叫作pickling;
讀取:unpickling;
pkl是pickle簡寫
"""python

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)#未執行完成whilethis

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=也能夠繼承內建庫中的類;
    passit

class father():
    def __init__(self):
        pass
class sub(father):#Python支持多重繼承
    def __init__(self):
        father.__init__(self)#調用父類構造初始化,這裏的self是子類的self,注意不是父類的;但須要指定傳遞參數
        super().__init__()#自動尋找基類方法進行初始化
s = sub()class

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

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()import

#迭代器:序列,字典,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__表明模塊的名字,加上此句話代表該模塊只被導入不執行;

相關文章
相關標籤/搜索