日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

总结day11 ----函数的学习(2)

發(fā)布時間:2025/7/25 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 总结day11 ----函数的学习(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

內(nèi)容大綱

  一:  函數(shù)的運(yùn)行

  二:  閉包

  三:  迭代器

  四:  生成器

  五:  列表生成器

  六:  列表推導(dǎo)式

  七:  生成器表達(dá)式 

  八:  匿名函數(shù)

一:  函數(shù)的運(yùn)行

  1:函數(shù)名是一個特殊變量

  

def func(): # print(666) # print(func)

?

?

?

  2:函數(shù)名可以當(dāng)做變量進(jìn)行賦值

?

# f1 = 2 # f2 = f1 # f3 = f2 # print(f3)# def func(): # print(666) # func1 = func # f2 = func1 # f3 = f2 # # print(f3) # f3()

?

?

?

  3:函數(shù)名可以當(dāng)做容器類的元素

?

# def func1(): # print('in func1') # # # def func2(): # print('in func2') # # # def func3(): # print('in func3') # # l1 = [func1, func2, func3] # for i in l1: # i()

?

?

?

  4:函數(shù)名可以當(dāng)做函數(shù)的參數(shù)

?

# def func(x): # # print(x) # x() # print('in func') # # def func1(): # print('in func1') # # func(func1)

?

?

?

  5:函數(shù)名可以當(dāng)做返回值

?

def func(x): # x ---> func1return x # func1def func1():print('in func1')# ret = func(func1) # func1 # ret() func(func1)()

?

二:閉包

  >1    

    1:內(nèi)層函數(shù)對外層函數(shù)(非全局)變量的引用

    2:閉包只存在內(nèi)部函數(shù)中

    3:函數(shù)都要逐層返回,最終返回給最外層

  >2

?

# def func(n): # n = name # def inner(): # print(n) # return inner # name = '太白' # f = func(name) # print(f.__closure__[0].cell_contents)

?

 

?

  >3

?

# def func(step): # num = 1 # num += step # print(num) # j = 0 # while j < 5: # func(3) # j += 1# 閉包:解釋器執(zhí)行程序時,如果遇到函數(shù),隨著函數(shù)的結(jié)束而關(guān)閉臨時名稱空間,但是!!! # 如果遇到閉包,有一個機(jī)制:那么閉包的空間不會隨著函數(shù)的結(jié)束而關(guān)閉。

?

?

三:迭代器

  >1 可迭代帶對象

    # 內(nèi)部含有__iter__方法的就是可迭代對象,遵循可迭代協(xié)議。   

  >2 迭代器

    # 迭代器:內(nèi)部含有'__iter__'并且含有'__next__'方法的就是迭代器,遵循迭代器協(xié)議。

  >迭代器的作用

    # 1,節(jié)省內(nèi)存.
    #?2,惰性機(jī)制.
    #?3, 一條路走到黑,不走回頭路.

?

?

四:生成器

  >1

    # 生成器本質(zhì)就是迭代器,生成器是自己用python代碼寫的迭代器。

  

# 生產(chǎn)衣服# def cloth(): # for i in range(5001): # print('我寫的代碼沒有bug 衣服%s號' % i) # cloth() # # def cloth2(): # for i in range(5001): # yield '有志青年 衣服%s號' % i #用的時候才調(diào)用 # # genor = cloth2() # for i in range(100): # print(next(genor)) # # for i in range(50): # print(next(genor))

?

?

?

?

  > send? ? next

   1: send? ?,? 有返回值,返回給上一個迭代器. 如果為開頭則報錯

?

# # def func(): # count = yield 666 # print(count) # num = yield '三包春藥' # print(num) # yield '太白金星' # n1 = yield '小虎' # print(n1) # genor = func() # print(next(genor)) # print(next(genor)) # send不僅能對應(yīng)yield取值,而且可以給上一個yield發(fā)送一個值 # print(genor.send(None)) # print(genor.send('alex')) # print(genor.send('111')) # print(genor.send('111')) # print(genor.send('111')) # 第一次取值能否用send傳參? 不能 # 最后一個yield 永遠(yuǎn)也得不到send的傳的值

?

?  2:yeild from? ? 把列表變成迭代器

# def func(): # lst = ['明亮', '容先', '王子', '萬趙'] # yield from lst # genor = func()
print(genor.__next__()) ?

 五:列表推導(dǎo)式

# 列表推導(dǎo)式:用一行代碼構(gòu)建簡單,較復(fù)雜的列表。 # 減少代碼量,裝逼。 #三種: # 1,循環(huán)模式。 [變量(加工后的變量) for 變量 in iterable ] # print([i for i in range(1,101)]) # 構(gòu)建一個列表:['python1期', 'python2期',....'python25期'] # l1 = ['python%s期' %i for i in range(1,26)] # print(l1)# 2 ,三元模式(循環(huán)模式) # 構(gòu)建一個列表:列表里面的元素是1~20,但是能被3整除元素替換成*。 # ret = '*' if 3>2 else 1 # print(ret) # print(['*' if i % 3 == 0 else i for i in range(1,21)])# 3,篩選模式 [變量(加工后的變量) for 變量 in iterable if 條件] # 三十以內(nèi)所有的偶數(shù)留到列表中 # print([i for i in range(1,31) if i % 2 == 0])

六: 匿名函數(shù)

func2 = lambda x,y: x + y print(func2(3,4))# 寫一個匿名函數(shù):需要三個數(shù)字參數(shù),返回值為三個數(shù)相乘

?

  

?

轉(zhuǎn)載于:https://www.cnblogs.com/baili-luoyun/p/10217122.html

總結(jié)

以上是生活随笔為你收集整理的总结day11 ----函数的学习(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。