Day11總結(jié)

1.生成式

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

注意: 表達(dá)式的結(jié)果就是每次循環(huán)生成器產(chǎn)生的數(shù)據(jù)
這兒的for循環(huán)可以控制生成器產(chǎn)生的數(shù)據(jù)的個(gè)數(shù)心墅,和產(chǎn)生的值
gen1 = (10 for x in range(10))
print(gen1)
for x in range(2):
print(next(gen1))

格式2:
表達(dá)式 for 變量 in 序列 if 條件語句
展開:
def func():
for 變量 in 序列:
if 條件語句:
yield 表達(dá)式
gen3 =(x for x in range(3) if x % 2)
print(next(gen3))

M = [i for i in range(1, 100) if i % 2 != 0] # 將一個(gè) list 映射為另一個(gè) list瞧壮,每個(gè)元素設(shè)為變量i
print(M)
b = (i for i in range(1, 10) if i % 2 == 0)
print(b)
a = [1 for i in range(1, 100) if i % 2 == 0] # 將列表range(n)映射到列表x瘩将,每個(gè)元素設(shè)為常量1
print(a)

squared = {x for x in [1, 1, 2]}
print(squared)

交換字典的鍵值對(duì)

dict1 = dict((x, y) for y, x in {'a': 1, 'b': 2}.items())
print(dict1)

運(yùn)行:

image.png

2.模塊的使用

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

2.怎么關(guān)聯(lián)多個(gè)模塊
方式1:
import 模塊名 - 將指定的模塊導(dǎo)入到當(dāng)前模塊中(模塊名就是py文件名)

說明:
a.執(zhí)行import時(shí)垫桂,會(huì)執(zhí)行對(duì)應(yīng)模塊的py文件中的代碼
b.import導(dǎo)入模塊時(shí)焚虱,會(huì)檢查當(dāng)前模塊之前是否已經(jīng)導(dǎo)入過堰燎,如果已經(jīng)導(dǎo)入過楣责,就不再導(dǎo)入
c.通過import 導(dǎo)入模塊后,可以通過 模塊名.全局變量 去使用被導(dǎo)入的模塊中的內(nèi)容
import test1

a = test1.test1_a
print(a)

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

說明:
a.執(zhí)行到導(dǎo)入模塊的語句時(shí)坯台,還是會(huì)執(zhí)行對(duì)應(yīng)模塊的py文件中的代碼
b.導(dǎo)入模塊時(shí)炬丸,會(huì)檢查當(dāng)前模塊之前是否已經(jīng)導(dǎo)入過,如果已經(jīng)導(dǎo)入過捂人,就不再導(dǎo)入
c.使用時(shí)只能使用import后面的變量/函數(shù)御雕,而且用的時(shí)候不用在前面模塊名
d.import后面可以使用逗號(hào)將多個(gè)變量/函數(shù)隔開,也可以使用*將模塊中所有的全局變量和函數(shù)一起導(dǎo)入
from test1 import test1_a

print(test1_a)

3.重命名
import 模塊名 as 新模塊名
from 模塊名 import 變量名/函數(shù)名 as 新變量名/函數(shù)名

4.包的導(dǎo)入中的代碼
import 包名 - 會(huì)直接執(zhí)行包中的init.py文件

from 包名 import 模塊名
from 包名.模塊名 import 變量
import test
import test.test1
print(test.test1.test1_a)

運(yùn)行:

image.png

3.選擇性導(dǎo)入

在模塊中將不需要其他模塊導(dǎo)入和執(zhí)行的代碼寫到
if name == 'main' 語句中滥搭。這樣就能阻止代碼被其他模塊執(zhí)行
聲明在這里面的變量也不會(huì)被其他模塊導(dǎo)入

原理:因?yàn)槊總€(gè)模塊都有一個(gè)name,他的默認(rèn)值是模塊對(duì)應(yīng)的py文件的名字酸纲。
當(dāng)正在直接執(zhí)行模塊的時(shí)候,模塊的name屬性值就會(huì)變成'main'

import test1

4.文件操作

r"""
1.數(shù)據(jù)本地化
將數(shù)據(jù)以文件的形式瑟匆,存儲(chǔ)到本地磁盤中闽坡。
(程序中變量保存的數(shù)據(jù)都是存到內(nèi)存中,當(dāng)程序運(yùn)行結(jié)束愁溜,內(nèi)存中的數(shù)據(jù)全部銷毀)

常見的數(shù)據(jù)本地化方式:
二進(jìn)制文件(包含音頻疾嗅,視頻,壓縮包等)冕象,普通文本文件,json和xml文件,數(shù)據(jù)庫(kù)文件

2.文件操作(讀和寫)
文件操作的步驟:
打開文件(新建文件) - 文件操作(讀和寫) - 關(guān)閉文件

3.打開文件
open(file,mode='r',...,encoding=None) - 返回的是被打開的文件對(duì)象(文件句柄)
說明:
file - 字符串代承;需要打開的文件的路徑(可以是絕對(duì)路徑,也可以是相對(duì)路徑)
絕對(duì)路徑(一般不用):C:\Users\hai\AppData\Local\SogouExplorer(完整路徑)
相對(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 - 不支持中文編碼

以讀的形式打開一個(gè)文本文件象迎,保存到變量f中。對(duì)f操作就是對(duì)被打開的文件進(jìn)行操作
"""
f = open('aaa.txt', encoding='utf-8')

"""
文件的讀操作
文件對(duì)象.read() - 從文件讀寫位置開始讀到文件結(jié)尾(默認(rèn)獲取文件中所有的內(nèi)容)
文件對(duì)象.readline() - 讀一行內(nèi)容
"""
?讀文件所有的內(nèi)容
content = f.read()
print(content)

?讀一行
content = f.readline()
print('===:', content)

?練習(xí):將文件中的內(nèi)容讀完祖驱,要求一行一行的讀
content = f.readline()
while content:
print(content)
content = f.readline()

5.文件的寫操作
文件對(duì)象.write(字符串) - 將字符串內(nèi)容寫到文件中(會(huì)完全覆蓋原文件中的內(nèi)容)
f = open('aaa.txt', 'w', encoding='utf-8')
f.write('你好嗎握恳?')

6.關(guān)閉
文件對(duì)象.close() - 關(guān)閉指定的文件
f.close()
print(f.closed) # 判斷文件是否關(guān)閉

5.二進(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())

print(f.closed)

2.二進(jìn)制文件的讀
普通文本文件也可以以二進(jìn)制的形式讀和寫
只要將讀寫方式設(shè)置為'rb'/'br' 就可以了乡洼。讀出來的數(shù)據(jù)直接就是二進(jìn)制數(shù)據(jù)
注意: 二進(jìn)制操作不能設(shè)置編碼方式(編碼方式只是針對(duì)文本文件)
with open('aaa.txt', 'rb') as f:
content = f.read()
print(content, type(content))

with open('image.jpg', 'rb') as f:
content = f.read()
print(content, type(content))

with open('imge.jpg', 'wb') as f:
f.write(content)

3.文件不存在
當(dāng)以讀的方式打開一個(gè)不存在的文件,會(huì)報(bào)錯(cuò)誤
當(dāng)以寫的形式打開一個(gè)不存在文件匕坯,不會(huì)報(bào)錯(cuò)束昵,并且會(huì)創(chuàng)建這個(gè)文件

6.文件操作的應(yīng)用

使用數(shù)據(jù)的時(shí)候去本地文件中去數(shù)據(jù)
數(shù)據(jù)修改后,將新的數(shù)據(jù)更新到本地文件中
?寫一個(gè)程序統(tǒng)計(jì)當(dāng)前程序執(zhí)行次數(shù).
with open('num.txt') as f:
count = int(f.read()) # 讀到的是字符串
print('第%d次執(zhí)行程序' % count)
count += 1
with open('num.txt', 'w') as f:
f.write(str(count))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葛峻,一起剝皮案震驚了整個(gè)濱河市锹雏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌术奖,老刑警劉巖礁遵,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轻绞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡佣耐,警方通過查閱死者的電腦和手機(jī)政勃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兼砖,“玉大人奸远,你說我怎么就攤上這事》硇” “怎么了懒叛?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)耽梅。 經(jīng)常有香客問我薛窥,道長(zhǎ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
  • 文/蒼蘭香墨 我猛地睜開眼澈歉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了屿衅?” 一聲冷哼從身側(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ú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有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
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)勋又。三九已至苦掘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間楔壤,已是汗流浹背鹤啡。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹲嚣,地道東北人递瑰。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像隙畜,于是被迫代替她去往敵國(guó)和親泣矛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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