時間過得飛快环形,一個月的python核心基礎(chǔ)課程已經(jīng)結(jié)束了总寻。學(xué)的暈暈乎乎的汗销,總覺著自己沒有長進犹褒。好多東西懵懵懂懂,一個屌絲要想蛻變成碼農(nóng)需要有螺絲釘?shù)霓D(zhuǎn)勁兒的弛针,Jerry老師用一篇開瑪莎萊蒂的美文和我叫王順德勵志視頻作為課程結(jié)束叠骑,意義在于讓我們刻苦練習(xí)代碼。我將本節(jié)課程復(fù)述一遍削茁。
1宙枷、文件的其他寫入方式
?x 用來新建文件,如果不存在就創(chuàng)建文件茧跋,文件存在我就報錯了
?FileExistsError: [Errno 17] File exists: 'demo5.txt'
file_name = 'demo6.txt'
with open(file_name, 'x', encoding='utf-8') asfile_obj:
???file_obj.write('nba\n')
2慰丛、 操作二進制文件
?b 二進制文件
file_name = r'C:\Users\19214\Desktop\Kalimba.mp3'
with open(file_name,'rb') as file_obj:
? ? ?print(file_obj.read(100))
? ? ?將讀取到的內(nèi)容寫出來
? ? ?定義一個新的文件
??? new_name ='abc.mp3'
??? withopen(new_name,'wb') as new_obj:
??????? chuck =1024 *100
??????? while True:
? ? ? ? ? ? 從已有的文件讀取內(nèi)容
???????????content = file_obj.read(chuck)
? ? ? ? ? ? 內(nèi)容讀取完畢,循環(huán)結(jié)束
??????????? ifnot content:
???????????????break
???????????new_obj.write(content)
3瘾杭、迭代器
?迭代:就是在一些元素中獲取元素的過程或者是一種方式
?迭代器 它是一個可以記住遍歷位置的對象诅病。迭代器對象從序列中的一個元素開始訪問,直到所有的元素被訪問完結(jié)束,而且只能往前不能往后
?可以被next()函數(shù)調(diào)用并不斷返回下一個值的對象我們稱之為迭代器Iterator
可迭代:可迭代對象 1. 生成器 2. 列表贤笆、元祖蝇棉、字符串、字典...
生成器是可迭代的苏潜,也是迭代器
列表是可迭代的银萍。但是它不是迭代器
?iter(lst)
通過iter()函數(shù)可以將可迭代的變成一個迭代器
from collections import Iterable
lst = [1,2,3,4]
s = (x + 1 for x in range(5))
r = isinstance(lst,Iterable)
r = isinstance('abc',Iterable)
r = isinstance(132,Iterable)
r = isinstance(s,Iterable)
print(r)
lst = iter(lst)
print(next(lst)) # TypeError: 'list' object is not aniterator
print(next(lst))
生成器和迭代器
生成器的出現(xiàn)是為了優(yōu)化程序節(jié)省內(nèi)存
迭代器是一個大的范圍而生成器只是迭代器的一種
4、 單例模式
單例模式是設(shè)計模式的一種恤左,保證系統(tǒng)中的一個類只有一個實例
class Person:
? ? ?pass
p1 = Person()
p2 = Person()
print(p1)
print(p2)
>>> 1、誰創(chuàng)建了對象搀绣?
?Person類的父類是object 繼承object
?object有一個new方法來創(chuàng)建對象
?創(chuàng)建對象之后飞袋,才可以執(zhí)行 __init__(self),進行初始化
?class Person:
? ? ?def__new__(cls, *args, **kwargs):
? ? ? ? ?print(123)
? ? ? ? ?def__init__(self):
? ? ? ? ? ? ?print('初始化方法....')
?p1 = Person()
?>>>2. 對象的執(zhí)行順序
?class Person:
? ? ?def__new__(cls, *args, **kwargs):
? ? ? ? ?print(123)
? ? ? ? ?obj =object.__new__(cls) #創(chuàng)建了一個對象
? ? ? ? ?returnobj
? ? def__init__(self):
? ? ? ? print('創(chuàng)建完對象之后再初始化....')
?p1 = Person()
class Person:
?>>>3、私有變量
??? _instance =None
??? def__new__(cls, *args, **kwargs):
? ? ? ? print(123)
??????? ifPerson._instance is None:
? ? ? ? ? ? ?obj= object.__new__(cls)?
#創(chuàng)建了一個對象
? ? ? ? ? ? ?Person._instance = obj?
#將這個對象賦值給類的私有變量_instance
??????? returnPerson._instance
??? def__init__(self):
? ? ? ? ?print('創(chuàng)建完對象之后再初始化....')
p1 = Person()
p2 = Person()
p3 = Person()
print(id(p1),id(p2),id(p3))