day10-markdown總結(jié)

1.匿名函數(shù)

函數(shù)名 = lambda 參數(shù)列表:返回值
函數(shù)名(實參)
sum1 = lambda x, y:x*y
def sum1_a(x, y):
return x*y

2.作用域
函數(shù)的調(diào)用過程是一個全棧的過程
全局變量:函數(shù)和類外面聲明的變量都是全局變量杠氢,作用域:從聲明到程序結(jié)束
局部變量:在函數(shù)/類里面聲明的變量時局部變量盐杂,作用域:從聲明到函數(shù)結(jié)束
3.遞歸函數(shù)(能不用就不用)

a.找臨界值(結(jié)束循環(huán))
b.找關(guān)系(上次循環(huán)和本次循環(huán)的關(guān)系f(n)和f(n-1)的關(guān)系)
c.根據(jù)f(n-1)實現(xiàn)f(n)的功能

4.模塊的使用
一個py文件就是一個模塊

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

在python中,函數(shù)就是一種特殊的類型豪诲。聲明函數(shù)的時候其實就是在聲明類型是function個的變量
變量能做的事情,函數(shù)都可以做
1.函數(shù)給其他變量賦值

def func1():
    print('hello python')
c = func1   #c也是一個函數(shù)

2.函數(shù)作為列表的函數(shù)

list1 = ['a', '0, 100]
list2 = []
list3 = []
for x in range(10):
    def func2():
        print(x+y, end=' ')
        return x+y
    list2.append(func2)
    list3.append(func2(2))
#list2中每個元素的值都是函數(shù)
print(list2)
print(list3)
list2[0]就是一個函數(shù)
func = list2[0]
print(func(100))
直接將函數(shù)作為列表的元素
funcs = [func1]
funcs[0]()

3.將函數(shù)作為字典的值

operation = {'+':lambda x, y:x+y, '-':lambda x, y:x-y}
result = operation['*'](10, 20)
print(result)

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

def cleac_kitchen(time):
    print('%s,打掃廚房' % time)
    print('收費200')
    return 200
def clean_floor(time):
    print('在%s,做地板清潔服務' % time)
    print('收費100元')
    return 100
#在指定的時間叫指定的服務
def call_service(time, service):
    service(time)
#將函數(shù)作為參數(shù),傳給其他函數(shù)
call_service('上午十點', cleac_kitchen)

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

def operation(operetor:str):
    if operetor == '+':
        def my_sum(*nums):
            sum1 = 0
            for num in nums:
                sum1+=num
            print(sum1)
        #將求和的函數(shù)返回
        return my_sum()
#operation('+')函數(shù)
operation('+')(1, 3)

3.生成器和生成式

1.可以吧迭代器看成一種容器粥惧,類似于列表。生成器就是來生成迭代器最盅。

a是生成器突雪,能夠生成0-9中的所有數(shù)字
a = (x for x in range(10))
print(a,type(a))

2.生成器和迭代器都是通過next來獲取里面的數(shù)據(jù)

print(next(a))

生成式:產(chǎn)生一個迭代器的表達式
3.通過鍵生成式產(chǎn)生的迭代器轉(zhuǎn)換成一個列表。

a = (char for char in 'hello python')
a = (char for char in 'he123llo python' if '0'<char<'9' )
print(next(a))
print(next(a))
list1 = [x for x in range(10)]
print(list1, type(list1))

4.將生成器轉(zhuǎn)化成列表

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

5.將生成器轉(zhuǎn)換成字典

注意:容器類型的元素是元祖涡贱,并且元祖中有且只有兩個元素咏删,才能轉(zhuǎn)換成元祖
dict1 =dict([(x, x*2) for x in range(10)])
print(dict1)

練習:用一句代碼實現(xiàn)交換一個字典中的key和value的值

dict3 = {'a':1, 'b':2}
dict2 = ((dict3[key],key) for key in {'a':1, 'b':2})
print(dic2)

4.生成器

1.只要函數(shù)中有yield關(guān)鍵字,那么這個函數(shù)就會變成一個生成器问词。
a.有yield的函數(shù)督函,在調(diào)用函數(shù)的時候不再是獲取返回值,而是產(chǎn)生一個生成器的對象激挪,生成器對象中保留的是函數(shù)體辰狡。
b.當通過next獲取生成器中的數(shù)據(jù)的時候,才會執(zhí)行函數(shù)體垄分,執(zhí)行到y(tǒng)ield并且將yield后面的結(jié)果作為生成的數(shù)據(jù)返回宛篇。同時記錄結(jié)束的位置,下次調(diào)用next的時候薄湿,從上次結(jié)束的位置接著往后執(zhí)行些己。

def func2():
    print('abc')
    for x in range(10):
        yield x
        print('aaa')
# 注意:函數(shù)中只要有yield,不管函數(shù)的調(diào)用結(jié)果嘿般,都是生成器
def func3(x):
    print('abc')
    if x > 10:
        yield 100
    return 20
print(func2(), type(func2()), type(func2()))
#這兒的func2()是一個生成器
gen = (func2())
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
gen2 = func3(1000)
print(gen2)

練習:寫一個生成器段标,可以產(chǎn)生斐波那契數(shù)列

def fei_bo(n):
    yield 1
    yield 1
    f1 = 1
    f2 = 1
    while True:
        yield f1+f2
        f1,f2 = f2, f1+f2
fei = fei_bo()
for _ in range(6):
    print(next(fei))

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

  1. 將列表轉(zhuǎn)換成迭代器對象
    迭代器(iter)
iter1 = iter([1, 2, 3, 4])
print(iter1)
print(next(iter1))
print(next(iter1))
for item in iter1:
    print(item)

5.文件操作

1.程序中不管操作任何文件,不管怎么操作炉奴,過程都是:打開文件逼庞,然后再操作(讀,寫) _>關(guān)閉文件
2.做數(shù)據(jù)持久化瞻赶,本地化赛糟,都要使用文件來保存數(shù)據(jù)派任。(數(shù)據(jù)庫文件、txt文檔璧南、json文件掌逛、plist/xml、二進制文件(圖片司倚,視頻等))豆混。程序中通過變量、列表动知、字典等保存的數(shù)據(jù)皿伺,在程序結(jié)束后都會被銷毀

打開文件(open)

open(文件地址,打開方式盒粮,encoding=編碼方式)
a.文件地址:告訴open函數(shù)要打開的是哪個文件鸵鸥,填文件路徑(可以填絕對路徑,也可以填相對路徑)
絕對路徑:(一般不用)
相對路徑;./相對路徑(相對于當前文件所在的目錄)
../相對路徑(相對于當前文件所在目錄的上一級)
b.打開方式:獲取文件內(nèi)容以讀的形式打開丹皱,往文件中寫內(nèi)容就以寫的形式打開
'r'-->讀(默認值)妒穴,讀出來的內(nèi)容以文本(str)的形式返回
'rb/br'-->讀,讀出來的內(nèi)容(bytes)以二進制的形式返回摊崭。
'w'-->寫讼油,寫文本到文件中
'wb/bw'-->寫,寫二進制數(shù)據(jù)到文件中
'a'-->寫爽室,追加
c.編碼方式:以文本的 形式讀和寫的時候才需要設置編碼方式汁讼。
utf-8:萬國碼
gbk:只支持中文
d.open函數(shù)的返回值是被打開的文件對象

2.關(guān)閉文件

文件對象.close()

打開文件,f就是被打開的文件對象

f = open('./files/test2.txt', 'r', encoding='utf-8')
# 獲取文件中的所有的內(nèi)容阔墩,將結(jié)果返回給content保存
content = f.read()
print(content)
f.close()
# readline 就是讀一行
f1 = open('./files/test2.txt', 'r', encoding='utf-8')
# 從文件開始讀到第一行結(jié)束
content = f1.readline()
print(content)
# 從第二行開始嘿架,讀到第二行結(jié)束
print(f1.readline())
# 從第三上開始,讀到第三行結(jié)束
print(f1.read())
f1.close()

b.寫操作

'w'-->寫操作啸箫,完全覆蓋文件的內(nèi)容
'a'-->寫操作耸彪,在原文件的內(nèi)容后去追加新的內(nèi)容
f = open('./files/test2.txt', 'w', encoding='utf-8')
f.write('程序員的詩詞')
f.close

4.文件不存在的情況

當以讀的形式打開文件的時候,如果文件不存在忘苛,程序會崩潰蝉娜。
當以寫的形式打開文件時候,如果不存在扎唾,系統(tǒng)不會報錯召川,會創(chuàng)建這個文件,并且將內(nèi)容存在新建的文件里面胸遇。```
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荧呐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌倍阐,老刑警劉巖概疆,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異峰搪,居然都是意外死亡岔冀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門概耻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來使套,“玉大人,你說我怎么就攤上這事咐蚯⊥觯” “怎么了弄贿?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵春锋,是天一觀的道長。 經(jīng)常有香客問我差凹,道長期奔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任危尿,我火速辦了婚禮呐萌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谊娇。我一直安慰自己肺孤,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布济欢。 她就那樣靜靜地躺著赠堵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪法褥。 梳的紋絲不亂的頭發(fā)上茫叭,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機與錄音半等,去河邊找鬼揍愁。 笑死,一個胖子當著我的面吹牛杀饵,可吹牛的內(nèi)容都是我干的莽囤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼切距,長吁一口氣:“原來是場噩夢啊……” “哼朽缎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤饵沧,失蹤者是張志新(化名)和其女友劉穎锨络,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狼牺,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡羡儿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了是钥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掠归。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悄泥,靈堂內(nèi)的尸體忽然破棺而出虏冻,到底是詐尸還是另有隱情,我是刑警寧澤弹囚,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布厨相,位于F島的核電站,受9級特大地震影響鸥鹉,放射性物質(zhì)發(fā)生泄漏蛮穿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一毁渗、第九天 我趴在偏房一處隱蔽的房頂上張望践磅。 院中可真熱鬧,春花似錦灸异、人聲如沸府适。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽檐春。三九已至,卻和暖如春儡嘶,著一層夾襖步出監(jiān)牢的瞬間喇聊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工蹦狂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留誓篱,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓凯楔,卻偏偏與公主長得像窜骄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子摆屯,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

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

  • 我居北海君南海,寄燕傳書謝不能 春風桃李一杯酒准验,江湖夜雨十年燈 --------------《寄黃幾復》- 我走過...
    污林圣手路公子閱讀 400評論 0 0
  • 文/雒宏軍 縣城里常有店鋪開張與關(guān)門赎线,這是經(jīng)濟規(guī)律,誰也阻擋不了糊饱。長盛不衰的的卻是“某某輔導中心”或者“某某英語學...
    雒宏軍的菜園子閱讀 236評論 2 3
  • 每到周五我就會放肆狠刷一下朋友圈垂寥,心里有個聲音在叫囂:管它呢,反正明天不上班另锋,想睡多晚都可以…… 于是刷圈的結(jié)果就...
    千年一眼閱讀 610評論 0 2