亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python教程之生成器和匿名函數(shù)

 更新時間:2022年01月14日 09:48:12   作者:qq_43479892  
這篇文章主要為大家介紹了python生成器和匿名函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

生成器

01 什么是生成器?

記住兩個關(guān)鍵:

  • **生成器是一種特殊的函數(shù)方法。**意味著它和函數(shù)(def)密不可分。
  • 基于上一點,只要函數(shù)中出現(xiàn)yield關(guān)鍵字,就是生成器函數(shù)

初學(xué)的你,還是太難理解?

02 通俗的講解

你可以將生成器理解為一個盒子,你可以向這個盒子里隨意添加元素,當(dāng)你需要的時候,再取出來用。

請看下面的例子:

# 普通函數(shù)
def func():
    return 1
f = func()
print("函數(shù)返回值:",f)
->函數(shù)返回值:1
print("函數(shù)返回值的類型:",type(f))
->函數(shù)返回值的類型:<class 'int'>
# 生成器
def gen\_func():
    yield 1
    yield 2
g = gen_func()
print("生成器對象:",g)
->生成器對象:object gen\_func at 0x00000189B8CFF7C8>
print("生成器對象的類型:",type(g))
->生成器對象的類型:<class 'generator'>
# 讀取生成器對象的值,因為生成器也是一個迭代器,實現(xiàn)了python的迭代協(xié)議(即實現(xiàn)了\_\_iter\_\_方法)
for i in g:
 print("生成器對象的值:",i)
->生成器對象的值: 1
->生成器對象的值: 2

03 生成器到底有什么用?

作用:惰性求值(一邊循環(huán)一邊計算的機制),節(jié)省性能

04 生成器的常見用途?

  • 讀大文件
  • 網(wǎng)絡(luò)爬蟲 scrapy 框架
  • 協(xié)程

舉個例子:斐波那契數(shù)列(0,1,1,2,3,5…),打印斐波那契數(shù)列前50個元素

# 不使用生成器,會消耗大量內(nèi)存
def fib(idx):
   res=[]
   n, a, b = 0, 0, 1
   while n < idx:
       res.append(b)
       a, b = b, a+b
       n += 1
   return res
res = fib(100)
print(res)
# 使用生成器,可節(jié)約大量內(nèi)存
def gen\_fib(idx):
   n, a, b = 0, 0, 1
   while n < idx:
       yield b
       a, b = b, a+b
       n += 1
for i in gen_fib(100):
   print(i)

匿名函數(shù)

01 什么是匿名函數(shù)?

當(dāng):

  • 函數(shù)實現(xiàn)比較簡單
  • 函數(shù)不需要被多個地方調(diào)用
  • 懶得給這個函數(shù)起名字時,我們可以使用匿名函數(shù)。

初學(xué)的你,還是太難理解?

02 通俗的講解

你想實現(xiàn)一個求x的平方的函數(shù),但是這個函數(shù)太簡單,不值得專門def定義,同時,你忘記了平方的英文如何拼寫,要是命名成 “pingfang”,又顯得自己太low,于是乎,你可以不給這個函數(shù)起名字,還能實現(xiàn)它。這就是匿名函數(shù)lambda表達式。

比如:求一個數(shù)的平方

# 不用 lambda 表達式
def square(x):
    return x * x
print(square(2))
# 使用 lambda 表達式
# 寫法:lambda 返回值:計算表達式
s = lambda x: x * x
print(s(2))

總結(jié)

1 如果你是初學(xué)者,可以先不掌握生成器和匿名函數(shù),待學(xué)成python后,再行琢磨;

2 在實際工作中,生成器和匿名函數(shù)的使用頻次,相對較高,并且在面試中是高頻問點。

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 使用keras實現(xiàn)非線性回歸(兩種加激活函數(shù)的方式)

    使用keras實現(xiàn)非線性回歸(兩種加激活函數(shù)的方式)

    這篇文章主要介紹了使用keras實現(xiàn)非線性回歸(兩種加激活函數(shù)的方式),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Django文件存儲 自己定制存儲系統(tǒng)解析

    Django文件存儲 自己定制存儲系統(tǒng)解析

    這篇文章主要介紹了Django文件存儲 自己定制存儲系統(tǒng)解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python RuntimeError: thread.__init__() not called解決方法

    Python RuntimeError: thread.__init__() not called解決方法

    這篇文章主要介紹了Python RuntimeError: thread.__init__() not called解決方法,需要的朋友可以參考下
    2015-04-04
  • tensorflow自定義激活函數(shù)實例

    tensorflow自定義激活函數(shù)實例

    今天小編就為大家分享一篇tensorflow自定義激活函數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python制作爬蟲爬取京東商品評論教程

    python制作爬蟲爬取京東商品評論教程

    本文是繼前2篇Python爬蟲系列文章的后續(xù)篇,給大家介紹的是如何使用Python爬取京東商品評論信息的方法,并根據(jù)數(shù)據(jù)繪制成各種統(tǒng)計圖表,非常的細致,有需要的小伙伴可以參考下
    2016-12-12
  • python類繼承用法實例分析

    python類繼承用法實例分析

    這篇文章主要介紹了python類繼承用法,實例分析了Python類的定義與類繼承的實現(xiàn)技巧,需要的朋友可以參考下
    2015-05-05
  • python中的?sorted()函數(shù)和sort()方法區(qū)別

    python中的?sorted()函數(shù)和sort()方法區(qū)別

    這篇文章主要介紹了python中的?sorted()函數(shù)和sort()方法,首先看sort()方法,sort方法只能對列表進行操作,而sorted可用于所有的可迭代對象。具體內(nèi)容需要的小伙伴可以參考下面章節(jié)
    2022-02-02
  • python GUI庫圖形界面開發(fā)之PyQt5動態(tài)加載QSS樣式文件

    python GUI庫圖形界面開發(fā)之PyQt5動態(tài)加載QSS樣式文件

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5動態(tài)加載QSS樣式表,需要的朋友可以參考下
    2020-02-02
  • Pandas?DataFrame.drop()刪除數(shù)據(jù)的方法實例

    Pandas?DataFrame.drop()刪除數(shù)據(jù)的方法實例

    pandas作為數(shù)據(jù)分析強大的庫,是基于numpy數(shù)組構(gòu)建的,專門用來處理表格和混雜的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Pandas?DataFrame.drop()刪除數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • ?Python錯誤與異常處理

    ?Python錯誤與異常處理

    這篇文章主要介紹了?Python錯誤與異常處理,錯誤與異常處理在Python中具有非常重要的地位,熟練的使用錯誤與異常處理能夠為我們的Python編程提供很多的便利之處,希望您閱讀完本文后能夠有所收獲
    2022-01-01

最新評論