Day11-總結(jié)

01-生成式

a.迭代器:

容器,可以同時(shí)存儲(chǔ)多個(gè)數(shù)據(jù),取得時(shí)候只能一個(gè)人一個(gè)的取,并且取過的數(shù)據(jù)在容器中就不存在了

b.生成器:

就是迭代器叁征,數(shù)據(jù)是通過調(diào)用函數(shù)獲取yield后的值產(chǎn)生的,數(shù)據(jù)只會(huì)獲取的時(shí)候產(chǎn)生

調(diào)用一個(gè)帶yield關(guān)鍵的函數(shù)逛薇,創(chuàng)建一個(gè)生成器捺疼。

1.什么是生成式

格式1:結(jié)果是一個(gè)生成器(迭代器)
(表達(dá)式 for in 序列) -->展開:
def func1():
for 變量 in 序列:
yield 表達(dá)式

注意:表達(dá)式的結(jié)果就是每次循環(huán)生成器產(chǎn)生的數(shù)據(jù)
這的for循環(huán)可以控制生成器產(chǎn)生數(shù)據(jù)的個(gè)數(shù)永罚,和產(chǎn)生的值

格式2:
(表達(dá)式 for 變量 in 序列 if 條件語句) --> 展開:
def func1():
for 變量 in 序列:
if 條件語句:
yeild 表達(dá)式

gen1 = (10 for x in range(10))
print(gen1)
print(next(gen1))
gen2 = list(x for x in range(10) if x % 2)
print(gen2) #[1, 3, 5, 7, 9]
# 交換字典的鍵值對(duì):{'a':1,'b':2,'c':3}
dict1 = {'a':1,'b':2,'c':3}
dict2 = dict((value,key) for key,value in dict1.items() )
print(dict2)

02-模塊的使用

1.什么是模塊

python 中一個(gè)py文件就是一個(gè)模塊

2.怎么關(guān)聯(lián)多個(gè)模塊

方式1:

ipmort 模塊名 - 將指定的模塊導(dǎo)入到當(dāng)前模塊中(模塊名就是python文件的文件名)

說明:
a.執(zhí)行import 的時(shí)候,實(shí)質(zhì)會(huì)進(jìn)去指定的模塊對(duì)應(yīng)的py文件中呢袱,去執(zhí)行里面的代碼
b.通過import去導(dǎo)入一個(gè)模塊后,可以通過模塊名羞福,全局變量去使用被倒入的模塊中的內(nèi)容
c.import導(dǎo)入模塊的時(shí)候惕蹄,會(huì)檢測當(dāng)前模塊之前是否已經(jīng)導(dǎo)入過,如果已經(jīng)導(dǎo)入過久不再導(dǎo)入

方式2:

from 模塊名 import 變量名/函數(shù)名 : 導(dǎo)入模塊中指定的變量或者函數(shù)

說明:
a.執(zhí)行到導(dǎo)入模塊的語句的時(shí)候卖陵,還是會(huì)先執(zhí)行指定模塊中所有語句
b.通過from-import導(dǎo)入的時(shí)候张峰,導(dǎo)入多次還是只執(zhí)行一次(查重)
c.使用的時(shí)候只能用import后面的變量/函數(shù)泪蔫,而且用的時(shí)候不用再前面加模塊名
d.import后面可以使用逗號(hào)將多個(gè)變量/函數(shù)隔開。也可以使用*將模塊中所有的全局變量一起倒入

import test1

a = test1.test1_a
print('當(dāng)前模塊:',a)


from test2 import test2_a,test2_func1
# from test2 import * 同時(shí)導(dǎo)入test2中所有的全局變量

函數(shù) - 對(duì)功能進(jìn)行封裝 - 獲取當(dāng)前時(shí)間對(duì)應(yīng)的代碼封裝到函數(shù)中
模塊 - 多個(gè)功能和多個(gè)數(shù)據(jù)進(jìn)行封裝 - 將所有和時(shí)間相關(guān)的函數(shù)或者變量放到一個(gè)py文件中
包 - 對(duì)多個(gè)模塊進(jìn)行封裝 - 所有和事件相關(guān)的py文件放到一個(gè)文件夾中
什么是寶:含有init.py文件的文件夾

3.重命名

import 模塊名 as 新模塊名
from 模塊名 import 變量名 as 新變量名

4.包的導(dǎo)入

import 包名 - 會(huì)直接執(zhí)行包中的init.py文件中的代碼
import 包名,模塊名 - 導(dǎo)入指定中的執(zhí)行模塊
from 包名 import 模塊名
from 包名.模塊名 import 變量

import test.test1
print(test.test1.test1_a)

03-選擇性導(dǎo)入

在模塊中將不需要其他模塊導(dǎo)入和執(zhí)行的代碼寫到 if__name__ == 'main'語句中喘批。
這樣就可以阻止被其他模塊執(zhí)行

原理:每個(gè)模塊都有一個(gè)name屬性鸥滨,默認(rèn)值是模塊對(duì)應(yīng)的py文件的名字谤祖。當(dāng)正在直接執(zhí)行
模塊的時(shí)候老速,模塊的name屬性值會(huì)變成‘main’.
當(dāng)import模塊的時(shí)候,執(zhí)行模塊橘券,模塊的name屬性不是'main'

import test1
if __name__ == '__main': # 寫在這兒的代碼不會(huì)被其他模塊執(zhí)行;聲明在這兒的變量也不會(huì)被其他模塊導(dǎo)入
    print('')

04 -文件操作

1.數(shù)據(jù)本地化

將數(shù)據(jù)以文件的形式,存儲(chǔ)到本地磁盤中锋华。(程序中變量保存的數(shù)據(jù)都是存到內(nèi)存中箭窜,
當(dāng)程序運(yùn)行結(jié)束內(nèi)存中國的數(shù)據(jù)會(huì)銷毀)

常見的數(shù)據(jù)本地化方式:二進(jìn)制文件(包含音頻、視頻、壓縮包等)婆咸,普通文件芜辕,json和xml文件,數(shù)據(jù)庫文件

2.文件操作(讀和寫)

文件操作的固定步驟:打開文件(新建文件)侵续,文件操作(讀和寫),關(guān)閉文件

3.打開文件

open(file,mode='r',...,encoding = None) - 返回的是被打開的文件對(duì)象(文件句柄)

說明:
file - 字符串:需要打開的文件路徑(可以是絕對(duì)路徑需五,也可以是相對(duì)路徑)
(一般不使用)絕對(duì)路徑
相對(duì)路徑:(相對(duì)于當(dāng)前py文件對(duì)應(yīng)的目錄)
aaa.txt 或者 ./aaa.txt
./指的是當(dāng)前目錄警儒,可以省略
../指的是當(dāng)前目錄的上層目錄
.../當(dāng)前目錄的上上層目錄
mode - 打開方式蜀铲;打開文件后不同的操作属百,對(duì)應(yīng)的打開方式不一樣
'r' - 默認(rèn)值记劝,以讀的方式打開文件族扰,讀出來的是字符串
'w' - 以寫的方式打開文件
'rb'/'br' - 以讀的方式打開,讀出來的數(shù)據(jù)是二進(jìn)制
'wb'/'bw' - 以寫的方式打開渔呵,寫二進(jìn)制數(shù)據(jù)到文件中
'a' - 以寫的方式打開,追加
'+' - 以讀寫方式打開

encoding - 文件編碼方式耕驰,一般賦值為’utf-8‘
utf-8 - 支持中文編碼
gbk - 不支持中文編碼

4.文件的讀操作

文件對(duì)象.read() - 從文件讀寫位置開始讀到文件結(jié)尾(默認(rèn)就是獲取文件中所有內(nèi)容)

# 以讀的形式打開一個(gè)文件录豺,保存到變量f中,對(duì)f進(jìn)行操作双饥,就是對(duì)被打開的文件進(jìn)行操作
f = open('./aaa.txt','r',encoding='utf-8')


# content = f.read()
# print(content)

# content = f.readline()
# print('==:',content)
# 將文件中的內(nèi)容讀完,要求一行一行的讀
# content = f.readline()
# while content:
#     print(content)
#     content = f.readline()

5.文件的寫操作

文件對(duì)象.write(字符串) - 將字符串中的內(nèi)容寫入到文件中(會(huì)完全覆蓋原文件的內(nèi)容)

'w' - 完全覆蓋
'a' - 在原文件的最后添加

f = open('./aaa.txt','w',encoding='utf-8')
f.write('周兒子')

6.關(guān)閉文件

文件對(duì)象.close() - 關(guān)閉指定的文件

f.close()
print(f.closed)

05-二進(jìn)制文件的讀寫

1.open方法的另一種寫法:

with open(文件路徑趴生,讀寫方式,encoding=便方式)as 文件對(duì)象:
文件操作
打開文件舍咖,將文件存在文件對(duì)象中锉桑。當(dāng)文件操作會(huì)自動(dòng)關(guān)閉


with open('./aaa.txt',encoding='utf-8') as f :
    print(f.read())

2.二進(jìn)制文件的讀

普通的文本文件,也可以以二進(jìn)制的形式讀和寫

只要將讀寫方式設(shè)置為'rb'/'br'就可以了民轴。讀出來的數(shù)據(jù)直接就是二進(jìn)制數(shù)據(jù)
注意:二進(jìn)制不能設(shè)置編碼方式

with open('./aaa.txt','rb') as f :
    content = f.read()
    print(content)

3.文件不存在

當(dāng)以讀的方式打開一個(gè)不存在的文件后裸,會(huì)報(bào)錯(cuò)
當(dāng)以寫的方式打開一個(gè)不存在的文件,不會(huì)報(bào)錯(cuò)微驶,并且會(huì)創(chuàng)建這個(gè)文件

with open('bbb.txt','w')as ff:
    pass

06-文件操作的應(yīng)用

# 寫一個(gè)程序統(tǒng)計(jì)當(dāng)前程序執(zhí)行的次數(shù)。第一次運(yùn)行程序打印1苟耻,第二次運(yùn)行的時(shí)候打印2
指導(dǎo)思想:
1.使用數(shù)據(jù)的時(shí)候去本地文件中取數(shù)據(jù)
2.數(shù)據(jù)修改后扶檐,將新的數(shù)據(jù)更新到本地文件中


with open('bbb.txt','r',encoding='utf-8')as f:
    num = int(f.read())  # 讀到的是字符串
    print('%d次'%num)
num += 1
with open('bbb.txt','w',encoding='utf-8') as f:
    f.write(str(num))   # 寫入的時(shí)候只能寫字符串
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市智蝠,隨后出現(xiàn)的幾起案子奈梳,更是在濱河造成了極大的恐慌,老刑警劉巖攘须,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阻课,死亡現(xiàn)場離奇詭異,居然都是意外死亡限煞,警方通過查閱死者的電腦和手機(jī)员凝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旺上,“玉大人,你說我怎么就攤上這事宣吱。” “怎么了杭攻?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵疤坝,是天一觀的道長。 經(jīng)常有香客問我锅睛,道長,這世上最難降的妖魔是什么现拒? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任具练,我火速辦了婚禮扛点,結(jié)果婚禮上岂丘,老公的妹妹穿的比我還像新娘奥帘。我一直安慰自己寨蹋,他們只是感情好已旧,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布惊楼。 她就那樣靜靜地躺著檀咙,像睡著了一般蔑匣。 火紅的嫁衣襯著肌膚如雪殖演。 梳的紋絲不亂的頭發(fā)上年鸳,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天彼棍,我揣著相機(jī)與錄音座硕,去河邊找鬼华匾。 笑死蜘拉,一個(gè)胖子當(dāng)著我的面吹牛有鹿,可吹牛的內(nèi)容都是我干的葱跋。 我是一名探鬼主播稍味,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼模庐,長吁一口氣:“原來是場噩夢啊……” “哼赖欣!你這毒婦竟也來了顶吮?” 一聲冷哼從身側(cè)響起悴了,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤藤巢,失蹤者是張志新(化名)和其女友劉穎掂咒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體温圆,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片努潘。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖深浮,靈堂內(nèi)的尸體忽然破棺而出菌瘫,到底是詐尸還是另有隱情雨让,我是刑警寧澤栖忠,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布狸相,位于F島的核電站捐川,受9級(jí)特大地震影響古沥,放射性物質(zhì)發(fā)生泄漏渐白。R本人自食惡果不足惜纯衍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一襟诸、第九天 我趴在偏房一處隱蔽的房頂上張望歌亲。 院中可真熱鬧惋鸥,春花似錦悍缠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽添履。三九已至缝龄,卻和暖如春叔壤,著一層夾襖步出監(jiān)牢的瞬間炼绘,已是汗流浹背俺亮。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留本讥,地道東北人拷沸。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親衡创。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钧汹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容