day10 函數(shù)變量

1.函數(shù)作為變量
在python中废士,函數(shù)就是一種特殊的類型蚯姆。聲明函數(shù)的時候,其實就是在聲明類型是function的變量弟断。(變量能做的咏花,函數(shù)都可以做)

1.給變量賦值

def func1():
    print('abc')
    
a = func1
a()
func1()
'''
abc
abc
'''

2.函數(shù)作為列表的元素(可以把函數(shù)存放到列表中)

a = []
for x in range(3):
    def fun1():
        print('abc')
    a.append(fun1)

print(a)
a[0]()
'''
[<function fun1 at 0x008DB8A0>, <function fun1 at 0x008DB2B8>, <function fun1 at 0x008DB8E8>]

abc
'''

3.函數(shù)作為函數(shù)的參數(shù)(回調(diào)函數(shù))

def fun1():
    print('a')

def fun2():
    print('b')


def  mai_fun(n):
    n()

mai_fun(fun2)
'''
b
'''

4.函數(shù)作為函數(shù)的返回值

def fun(str1):
    if str1 == '+':
        def sum2(*n):
            sum1 = 0
            for num in n:
                sum1 += num
            return sum1
        return sum2
print(fun('+')(1,2,3))
'''
6

2.生成器和生成式
1.可以把迭代器看成一種容器,類似列表夫嗓。生成器就是來生成迭代器。

2.生成式--------產(chǎn)生一個迭代器的表達(dá)式
a = (x for x in range(10))
print(next(a))
print(next(a))
結(jié)果:0,1
'''
1.a是生成器冲秽,能夠生成0-9中的所有的數(shù)字舍咖。
2.生成器和迭代器都是通過next來獲取里面的數(shù)據(jù)
'''
2.b = (char for x in 'waqsw' if  x =='wa')
'''
后面可以加判斷條件。
'''

3.list1 = [x for x in range(10)]
'''
通過將生成式產(chǎn)生的迭代器轉(zhuǎn)換成了一個列表
'''

4.將生成器轉(zhuǎn)換成字典(容器類型的元素是元組锉桑,并且元素中有且只有兩個元素排霉,才能轉(zhuǎn)換成字典)

dict1 = [(x,x+1) for x in range(10)]
print(dict1)
dict2 = dict(dict1)
print(dict2)
'''
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 10)]
{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}
'''

練習(xí),key,value互換民轴。

dict2 = {'a':1,'b':2}
dict3 = dict(((dict2[x],x) for x in dict2))
dict1 = dict(((v,k) for k,v in {'a':1,'b':2}.items()))

print(dict1)
print(dict3)
'''
{1: 'a', 2: 'b'}
{1: 'a', 2: 'b'}
'''

3.yield

1.只要函數(shù)中有yield關(guān)鍵字攻柠,那么這個函數(shù)就會變成一個生成器球订。(只要有yield不管有沒有執(zhí)行到y(tǒng)ield,函數(shù)的調(diào)用結(jié)果都是生成器)
2.有yield的函數(shù)瑰钮,在調(diào)用函數(shù)的時候不再是獲取返回值冒滩,而是產(chǎn)生一個生成器對象,生成器對象中保留的是函數(shù)體浪谴。
3.當(dāng)通過next獲取生成器中的數(shù)據(jù)的時候开睡,才會去執(zhí)行函數(shù)體,執(zhí)行到y(tǒng)ield為止苟耻,并且將yield后面的結(jié)果作為生成的數(shù)據(jù)返回篇恒。同時記錄結(jié)束的位置,下次再調(diào)用next的時候凶杖,從上次結(jié)束的位置接著往后執(zhí)行胁艰。
'''
def fun1():
    yield 1
    yield 1

    x = y = 1
    while True:
        yield x+y
        x,y = y,x+y

gen = fun1()
for _ in range(10):
    print(next(gen),end=' ')
'''斐波拉切數(shù)列
1 1 2 3 5 8 13 21 34 55 

4.生成器和生成式產(chǎn)生的對象就是迭代器智蝠。

iter1 = iter([1,2,3,4,5])
print(next(iter1))

for item in iter1:
    print(item,end=' ')
'''
1
2 3 4 5 
'''
將列表轉(zhuǎn)換成迭代對象

5.文件操作
1.程序中不管操作任何文件腾么,不管怎么操作,過程都是:打開文件-->操作(讀/寫)--->關(guān)閉文件
2.做數(shù)據(jù)持久化,本地化寻咒,都要使用文件來保存數(shù)據(jù)(數(shù)據(jù)庫文件哮翘,txt文檔,json文件毛秘,plist饭寺,xml文件等,二進(jìn)制文件(圖片叫挟,視頻艰匙,音頻等))

a.文本文件的操作

1.打開文件
open(文件地址,打開方式,encoding=編碼方式)
'''
a.文件地址:文件所在的地址(路徑)。絕對路徑和相對路徑抹恳。

b.打開方式:
'r' ------ > 讀(默認(rèn)值),以文本的形式返回(str)
'rb'------> 讀员凝,讀出來的內(nèi)容以二進(jìn)制(bytes)的形式返回。

'w' ------> 寫奋献,寫文本到文件中(先抹除文本的原內(nèi)容在寫入健霹,如果文件不存在,會自動創(chuàng)建)
'wb'------>寫瓶蚂,寫二進(jìn)制數(shù)據(jù)到文件中
'a' -------->寫(追加),在原有的內(nèi)容后面寫糖埋。

c.編碼方式:以文本的形式讀和寫的時候才需要設(shè)置編碼方式。utf -8(萬國碼)

2.操作文件

open函數(shù)的返回值是被打開的文件對象
f1 = open(r'C:/Users/Administrator/Desktop/1.txt','r')
f2 = open(r'C:/Users/Administrator/Desktop/1.txt','w')
一.讀
'''
f1.read()  # 讀所有內(nèi)容窃这,將結(jié)果返回瞳别。
f1.readline()  # 一行一行的讀
注意:當(dāng)打開這個文件,沒關(guān)閉之前。假如讀一行祟敛,下次再讀就從第二行開始疤坝。
'''
二.寫
'''
f2.write()  # 'w' 抹除之前的內(nèi)容,然后寫馆铁。如果想不抹除就用 'a'

'''
1.當(dāng)以讀的形式打開文件的時候跑揉,如果文件不存在,程序會報錯叼架。
2.當(dāng)以寫的形式寫文件的時候畔裕,如果文件不存在,文件會被創(chuàng)建乖订。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扮饶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乍构,更是在濱河造成了極大的恐慌甜无,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哥遮,死亡現(xiàn)場離奇詭異岂丘,居然都是意外死亡,警方通過查閱死者的電腦和手機眠饮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門奥帘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仪召,你說我怎么就攤上這事寨蹋。” “怎么了扔茅?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵已旧,是天一觀的道長。 經(jīng)常有香客問我召娜,道長运褪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任玖瘸,我火速辦了婚禮秸讹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雅倒。我一直安慰自己璃诀,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布屯断。 她就那樣靜靜地躺著文虏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪殖演。 梳的紋絲不亂的頭發(fā)上氧秘,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音趴久,去河邊找鬼丸相。 笑死,一個胖子當(dāng)著我的面吹牛彼棍,可吹牛的內(nèi)容都是我干的灭忠。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼座硕,長吁一口氣:“原來是場噩夢啊……” “哼弛作!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起华匾,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤映琳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜘拉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萨西,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年旭旭,在試婚紗的時候發(fā)現(xiàn)自己被綠了谎脯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡持寄,死狀恐怖源梭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情际看,我是刑警寧澤咸产,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站仲闽,受9級特大地震影響脑溢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赖欣,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一屑彻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧顶吮,春花似錦社牲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽违寿。三九已至,卻和暖如春熟空,著一層夾襖步出監(jiān)牢的瞬間藤巢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工息罗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掂咒,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓迈喉,卻偏偏與公主長得像绍刮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挨摸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351