2018-08-31 day10 學(xué)習(xí)總結(jié)

函數(shù)

1.函數(shù)作為變量

在python中绍填,函數(shù)就是一種特殊的類(lèi)型,其實(shí)就是在聲明類(lèi)型是function的變量
變量能做的是扁远,函數(shù)都可以做

1.使用一個(gè)變量給另外一個(gè)變量賦值
 
    a = 10
    b = a

    # 聲明一個(gè)函數(shù)func1(聲明了一個(gè)函數(shù)func1平夜,func1就是一個(gè)變量
    def func1():
        print('hello python')

    # c也是一個(gè)函數(shù)
    c =func1
    func1()
    c()
輸出結(jié)果:
hello python
hello python
2.函數(shù)作為列表的元素
list1 = [a,'10',100]
    list2 = []
    list3 = []
    for x in range(10):
        def func2(y):
            print(x+y)
        list2.append(func2)
        list3.append(func2(x))
    print(list2)
    print(list3)
    # list2[0]就是一個(gè)函數(shù)
    func = list2[0]
    print(func(100))

    # 調(diào)用list2中下標(biāo)是1對(duì)應(yīng)的函數(shù),并且傳參為10
    x = 10
    list2[0](10)

    # 直接將函數(shù)作為列表的元素
    funcs = [func1]
    funcs[0]()
3.將函數(shù)作為字典的值
    operation = {'+':lambda x,y:x+y,'-':lambda x,y:x-y,'*':lambda x,y,:x*y}
    result = operation['+'](10,20)
    print(result)
###### 4.函數(shù)作為函數(shù)的參數(shù)(回調(diào)函數(shù))
    def clean_kitchen(time):
        print("在%s赐稽,打掃廚房"%time)
        print("收費(fèi)200元")
        return 200
    def clean_floor(time):
        print("在%s,做地板清潔服務(wù)")
        print("收費(fèi)100元")
        return 100
    # 在指定的時(shí)間浑侥,叫指定的服務(wù)
    def call_service(time:str,service):
        service(time)
    call_service('上午十點(diǎn)',clean_kitchen)
5.函數(shù)作為函數(shù)的返回值
    def operation(operator:str):
        if operator =='+':
            def my_sum(*nums):
                sum1 = 0
                for num in nums:
                    sum1 += num
                print(sum1)
            return my_sum
        elif operator =='*':
            def my_sum(*nums):
                sum1 = 1
                for num in nums:
                    sum1 *= num
                print(sum1)
            return my_sum
    operation('+')(1,2,3

2.生成器和生成式

可以吧迭代器看成一種容器又憨,類(lèi)似列表。生成器就是來(lái)生成迭代器锭吨。

1.生成式(產(chǎn)生一個(gè)迭代器的表達(dá)式)
a0是生成器蠢莺,能夠生成0-9中所有的數(shù)字
a0 = (x for x in range(10))
#2.生成器和迭代器都是通過(guò)next來(lái)獲取里面的數(shù)據(jù)
print(next(a0))
print(next(a0))
print(next(a0))
print('======')
for x in a0:
    print(x)
輸出結(jié)果:
0
1
2
======
3
4
5
6
7
8
9

3.將生成器轉(zhuǎn)換成列表

list1 = [x for x in range(10)]
print(list1)

4.將生成器轉(zhuǎn)換成字典
注意:容器類(lèi)型的元素是元組,并且元素中有且只有兩個(gè)元素的零如,才能轉(zhuǎn)換成字典

dict = dict((x,x*2)for x in range(10))
print(dict)

3.生成器

  1. 有yield的函數(shù)躏将,在調(diào)用函數(shù)的時(shí)候不再是獲取返回值,而是產(chǎn)生一個(gè)生成器對(duì)象考蕾,生成器對(duì)象中保留的是函數(shù)體
    2.當(dāng)通過(guò)next來(lái)獲取生成器中的數(shù)據(jù)的時(shí)候祸憋,才回去執(zhí)行函數(shù)體。執(zhí)行到y(tǒng)ield為止肖卧,并且將yield后面的結(jié)果作為生成的數(shù)據(jù)返回蚯窥,同時(shí)記錄結(jié)束的位置,下次再調(diào)用next的時(shí)候從上次結(jié)束的位置接著往后執(zhí)行
def func1():
    print('abc')
    for x in range(10):
        yield x
        print('aaa')
gen = func1()
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
輸出結(jié)果:
abc
0
aaa
1
aaa
2
aaa
3
aaa
4

練習(xí):寫(xiě)一個(gè)生成器塞帐,可以產(chǎn)生斐波那契數(shù)列(可以無(wú)限生成)

def feibo(n):
    a = 1
    b = 1
    i = 1
    # print(1)
    while i<=n:
        c = a + b
        yield a
        a = b
        b = c
        i += 1
gen2 = feibo(11)
print(next(gen2))
print(next(gen2))
print(next(gen2))
print(next(gen2))
print(next(gen2))
print(next(gen2))
print(next(gen2))
print(next(gen2))
print(next(gen2))
print(next(gen2))
print(next(gen2))
輸出結(jié)果:
1
1
2
3
5
8
13
21
34
55
89

生成器和生成式產(chǎn)生的對(duì)象就是迭代器

4.文件操作

1.程序中不管操作任何文件拦赠,不管怎么操作,過(guò)程都是:打開(kāi)文件-->操作(讀/寫(xiě))-->關(guān)閉文件
2.做數(shù)據(jù)持久化葵姥,本地化都要使用文件來(lái)保存數(shù)據(jù)
(數(shù)據(jù)庫(kù)文件荷鼠,txt文檔,json文件榔幸,plist文件允乐,xml文件等,二進(jìn)制文件(圖片削咆,視頻牍疏,音頻等))

程序中通過(guò)變量,列表拨齐,字典等保存的數(shù)據(jù)鳞陨,在程序結(jié)束后都會(huì)被銷(xiāo)毀的。

1.打開(kāi)文件
open(文件地址奏黑,打開(kāi)方式炊邦,encoding = 編碼方式)
a.文件地址:告訴open函數(shù)要打開(kāi)哪個(gè)文件编矾,填文件路徑熟史∧俸Γ可以填絕對(duì)路徑,也可以填相對(duì)路徑
絕對(duì)路徑:一般不用
相對(duì)路徑:./相對(duì)路徑(相對(duì)于當(dāng)前文件所在的目錄)
../相對(duì)路徑(相當(dāng)于當(dāng)前文件所在的目錄的上一層目錄)
.../相對(duì)路徑(相當(dāng)于當(dāng)前文件所在的目錄的上一層目錄的上一層目錄)
b.打開(kāi)方式:獲取文件的內(nèi)容以讀的形式打開(kāi)蹂匹,在文件中寫(xiě)內(nèi)容就以寫(xiě)的形式打開(kāi)
'r' -->讀(默認(rèn)值),讀出來(lái)的內(nèi)容以文本的形式返回
'rb'/'br' --> 讀碘菜,讀出來(lái)的內(nèi)容以二進(jìn)制(bytes)的形式返回
'w' --->寫(xiě),寫(xiě)文本到文件中
'wb'/'bw'--->寫(xiě)限寞,寫(xiě)二進(jìn)制數(shù)據(jù)到文件中
'a'--->寫(xiě)忍啸,追加

c.編碼方式:以文本的形式讀和寫(xiě)的時(shí)候才需要設(shè)置編碼方式。
utf-8:萬(wàn)國(guó)碼
gbk:只支持中文

d.open函數(shù)的返回值是被打開(kāi)的文件對(duì)象

2.關(guān)閉文件
文件對(duì)象.close()
3.操作文件

# a. 讀操作
# 打開(kāi)文件履植,f就是被打開(kāi)文件對(duì)象
f = open('./test.txt','r',encoding='utf-8')
# 獲取文件中的所有內(nèi)容计雌,將結(jié)果返回給content保存
# 從文件開(kāi)始讀到第二行結(jié)束
content=f.readline()
print(content)
print('=====')
# 從第二行開(kāi)始,讀到第二行結(jié)束
print(f.readline())
print('====')

#從第三行開(kāi)始玫霎,讀到文件結(jié)束
print(f.read())
f.close()
# b.寫(xiě)操作
'''
'w'--->寫(xiě)操作凿滤,完全覆蓋原文件的內(nèi)容
'a'--->寫(xiě)操作,在原文件的內(nèi)容后去追加新的內(nèi)容
'''
f = open('./test.txt','a',encoding='utf-8')
f.write("程序員的詩(shī)")
f.close()
# 4.文件不存在的情況
'''
當(dāng)以讀的形式打開(kāi)文件的時(shí)候庶近,如果文件不存在翁脆,程序會(huì)崩潰。會(huì)報(bào)錯(cuò)
當(dāng)以寫(xiě)的形式打開(kāi)一個(gè)不存在的文件的時(shí)候鼻种,會(huì)自動(dòng)創(chuàng)建一個(gè)新的文件
'''

f = open('./test1.txt','w',encoding='utf-8')
f.write("你好反番,江秀成")
f.close()
# 練習(xí):統(tǒng)計(jì)一個(gè)模塊執(zhí)行的次數(shù)
f = open('./test2.txt','r',encoding='utf-8')
number = int(f.read())
print(number)
f.close()
number +=1
f = open('./test2.txt','w',encoding='utf-8')
f.write(str(number))
f.close()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市叉钥,隨后出現(xiàn)的幾起案子罢缸,更是在濱河造成了極大的恐慌,老刑警劉巖投队,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祖能,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蛾洛,警方通過(guò)查閱死者的電腦和手機(jī)养铸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)轧膘,“玉大人钞螟,你說(shuō)我怎么就攤上這事』寻” “怎么了鳞滨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蟆淀。 經(jīng)常有香客問(wèn)我拯啦,道長(zhǎng)澡匪,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任褒链,我火速辦了婚禮唁情,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甫匹。我一直安慰自己甸鸟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布兵迅。 她就那樣靜靜地躺著抢韭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恍箭。 梳的紋絲不亂的頭發(fā)上刻恭,一...
    開(kāi)封第一講書(shū)人閱讀 49,856評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音扯夭,去河邊找鬼鳍贾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勉抓,可吹牛的內(nèi)容都是我干的贾漏。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼藕筋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼纵散!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起隐圾,我...
    開(kāi)封第一講書(shū)人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤伍掀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后暇藏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蜜笤,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年盐碱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了把兔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓮顽,死狀恐怖县好,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情暖混,我是刑警寧澤缕贡,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響晾咪,放射性物質(zhì)發(fā)生泄漏收擦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一谍倦、第九天 我趴在偏房一處隱蔽的房頂上張望塞赂。 院中可真熱鬧,春花似錦剂跟、人聲如沸减途。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至辽剧,卻和暖如春送淆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怕轿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工偷崩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撞羽。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓阐斜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親诀紊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谒出,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

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