最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章帶你學(xué)習(xí)Python3的高級(jí)特性(2)

 更新時(shí)間:2022年01月25日 17:23:34   作者:FUXI_Willard  
這篇文章主要為大家詳細(xì)介紹了Python3的高階函數(shù),主要介紹什么是高級(jí)特性,高級(jí)特性的用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

1.生成器

# 一邊循環(huán)一邊計(jì)算的機(jī)制,稱為生成器:generator;
# 創(chuàng)建generator方法:
# 1.把一個(gè)列表生成式的[]改成()
numsList = [num * num for num in range(10)]
print("列表生成式生成numsList:",numsList)
numsGenerator = (num * num for num in range(10))
print("生成器生成numsGenerator:",numsGenerator)
# 使用next()函數(shù)獲得generator的下一個(gè)返回值
print("打印numsGenerator第一個(gè)元素:",next(numsGenerator))
print("打印numsGenerator第二個(gè)元素:",next(numsGenerator))
print("--------------------------------------------------------")
# 使用for循環(huán)打印generator元素
print("使用循環(huán)打印生成器中的元素!")
for num in numsGenerator:
    print(num,end = " ")
print("\n")
print("--------------------------------------------------------")
# 斐波拉契數(shù)列(Fibonacci):除第一個(gè)和第二個(gè)數(shù)外,任意一個(gè)數(shù)均可由前兩個(gè)數(shù)相加得到
# 1,1,2,3,5,8,13,21,34
def fibonacci(num):
    n, a, b = 0, 0, 1
    while n < num:
        print(b,end = "  ")
        a, b = b, a + b
        n = n + 1
    return "Done"

print("Fibonacci前10項(xiàng)為:")
fibonacci(10)
print("\n")
print("--------------------------------------------------------")
# 2.把fibonacci()函數(shù)變成generator函數(shù)
def fibonacci(num):
    n, a, b = 0, 0, 1
    while n < num:
        yield b
        a, b = b, a + b
        n = n + 1
    return "Done"

# Tips:
# 1.如果一個(gè)函數(shù)定義中包含yield關(guān)鍵字,則這個(gè)函數(shù)是一個(gè)generator函數(shù);
# 2.調(diào)用一個(gè)generator函數(shù)將返回一個(gè)generator;
fib = fibonacci(10)
print("fib的值:",fib)

# 結(jié)果輸出:
列表生成式生成numsList: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
生成器生成numsGenerator: <generator object <genexpr> at 0x0000028F0E6ACB88>
打印numsGenerator第一個(gè)元素: 0
打印numsGenerator第二個(gè)元素: 1
--------------------------------------------------------
使用循環(huán)打印生成器中的元素!
4 9 16 25 36 49 64 81 

--------------------------------------------------------
Fibonacci前10項(xiàng)為:
1  1  2  3  5  8  13  21  34  55  

--------------------------------------------------------
fib的值: <generator object fibonacci at 0x0000028F0E7839A8>
 

# 普通函數(shù)和generator函數(shù)的執(zhí)行流程:
# 1.普通函數(shù):順序執(zhí)行,遇到return語句或最后一行函數(shù)語句就返回;
# 2.generator函數(shù):在每次調(diào)用next()的時(shí)候執(zhí)行,遇到y(tǒng)ield語句返回;
# 3.再次執(zhí)行時(shí)從上次返回的yield語句處繼續(xù)執(zhí)行;
# 實(shí)例:定義一個(gè)generator函數(shù),依次返回"Willard",18,"Engineer"
def willardInfo():
    print("STEP1")
    yield "Willard"
    print("--------")
    print("STEP2")
    yield 18
    print("--------")
    print("STEP3")
    yield "Engineer"

# 調(diào)用willardInfo()這個(gè)generator函數(shù),先生成一個(gè)generator對(duì)象
# 然后用next()函數(shù)不斷獲得下一個(gè)返回值,即可用循環(huán)直接打印
willardInfoObject = willardInfo()
for willard in willardInfoObject:
    print(willard)

# 結(jié)果輸出:
STEP1
Willard
--------
STEP2
18
--------
STEP3
Engineer
 

2.迭代器

# 可直接用于for循環(huán)的數(shù)據(jù)類型:
# 1.list、tuple、dict、set、str等;
# 2.generator,包括:生成器和帶yield的generator function;
# 3.可以直接作用于for循環(huán)的對(duì)象稱為可迭代對(duì)象:Iterable;
# 4.使用isinstance()判斷一個(gè)對(duì)象是否為Iterable對(duì)象;
from collections.abc import Iterable
print("判斷l(xiāng)ist是否為可迭代對(duì)象!",isinstance([],Iterable))
print("判斷dict是否為可迭代對(duì)象!",isinstance({},Iterable))
print("判斷str是否為可迭代對(duì)象!",isinstance("Willard",Iterable))
print("判斷生成式是否為可迭代對(duì)象!",isinstance((num for num in range(10)),Iterable))
print("判斷number是否為可迭代對(duì)象!",isinstance(99,Iterable))

# 結(jié)果輸出:
判斷l(xiāng)ist是否為可迭代對(duì)象! True
判斷dict是否為可迭代對(duì)象! True
判斷str是否為可迭代對(duì)象! True
判斷生成式是否為可迭代對(duì)象! True
判斷number是否為可迭代對(duì)象! False
 

# 可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)值的對(duì)象稱為迭代器:Iterator
# 使用isinstance()判斷一個(gè)對(duì)象是否為Iterator對(duì)象;
from collections.abc import Iterator
print("判斷生成器是否為迭代器!",isinstance((num for num in range(10)),Iterator))
print("判斷l(xiāng)ist是否為迭代器!",isinstance([],Iterator))
print("判斷dict是否為迭代器!",isinstance({},Iterator))
print("判斷str是否為迭代器!",isinstance("Willard",Iterator))
print("----------------------------------------------------------")
# Tips:
# 1.生成器都是Iterator對(duì)象,但list、dict、str是Iterable但不是Iterator;
# 2.Iterator對(duì)象表示數(shù)據(jù)流,Iterator對(duì)象可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)數(shù)據(jù),
# 直到?jīng)]有數(shù)據(jù)時(shí)拋出StopIteration錯(cuò)誤;這個(gè)數(shù)據(jù)流可以看作一個(gè)有序序列,
# 但不能提前知道序列的長(zhǎng)度,只能不斷通過next()函數(shù)實(shí)現(xiàn)按需計(jì)算下一個(gè)數(shù)據(jù),
# Iterator的計(jì)算是惰性的,只有在需要返回下一個(gè)數(shù)據(jù)時(shí)才計(jì)算;
# 3.使用iter()函數(shù)把list、dict、str變成Iterator;
print("使用iter()函數(shù)把list、dict、str變成Iterator.")
print("判斷l(xiāng)ist是否為迭代器!",isinstance(iter([]),Iterator))
print("判斷dict是否為迭代器!",isinstance(iter({}),Iterator))
print("判斷str是否為迭代器!",isinstance(iter("Willard"),Iterator))

# 結(jié)果輸出:
判斷生成器是否為迭代器! True
判斷l(xiāng)ist是否為迭代器! False
判斷dict是否為迭代器! False
判斷str是否為迭代器! False
----------------------------------------------------------
使用iter()函數(shù)把list、dict、str變成Iterator.
判斷l(xiāng)ist是否為迭代器! True
判斷dict是否為迭代器! True
判斷str是否為迭代器! True
 

總結(jié)

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

相關(guān)文章

  • Flask?數(shù)據(jù)庫(kù)遷移詳情

    Flask?數(shù)據(jù)庫(kù)遷移詳情

    本文給大家分享的是?Flask?數(shù)據(jù)庫(kù)遷移詳情,db.create_all()不會(huì)重新創(chuàng)建表或是更新表,需要先使用db.drop_all()刪除數(shù)據(jù)庫(kù)中所有的表之后再調(diào)用db.create_all()才能重新創(chuàng)建表,但是這樣的話,原來表中的數(shù)據(jù)就都被刪除了,這肯定是不行的,這時(shí)就出現(xiàn)了數(shù)據(jù)庫(kù)遷移的概念
    2021-11-11
  • Python中的exec、eval使用實(shí)例

    Python中的exec、eval使用實(shí)例

    這篇文章主要介紹了Python中的exec、eval使用實(shí)例,本文以簡(jiǎn)潔的方式總結(jié)了Python中的exec、eval作用,并給出實(shí)例,需要的朋友可以參考下
    2014-09-09
  • Python查找多個(gè)字典公共鍵key的方法

    Python查找多個(gè)字典公共鍵key的方法

    這篇文章主要介紹了Python查找多個(gè)字典公共鍵key案例,文章主要通過案例分享展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Python的函數(shù)使用介紹

    Python的函數(shù)使用介紹

    這篇文章主要介紹了Python的函數(shù)使用,在兩種python循環(huán)語句的使用中,不僅僅是循環(huán)條件達(dá)到才能跳出循環(huán)體。所以,在對(duì)python函數(shù)進(jìn)行闡述之前,先對(duì)跳出循環(huán)的簡(jiǎn)單語句塊進(jìn)行介紹,需要的朋友可以參考一下
    2021-12-12
  • python常用模塊(math itertools functools sys shutil)使用講解

    python常用模塊(math itertools functools sys 

    這篇文章主要介紹了python常用模塊之math itertools functools sys shutil的使用示例講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • python如何統(tǒng)計(jì)代碼運(yùn)行的時(shí)長(zhǎng)

    python如何統(tǒng)計(jì)代碼運(yùn)行的時(shí)長(zhǎng)

    這篇文章主要介紹了python如何統(tǒng)計(jì)代碼運(yùn)行的時(shí)長(zhǎng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python jupyter入門教程

    python jupyter入門教程

    Jupyter Notebook是一個(gè)開源的Web應(yīng)用程序,允許用戶創(chuàng)建和共享包含代碼、方程式、可視化和文本的文檔,今天通過本文給大家分享python jupyter入門教程,需要的朋友一起看看吧
    2021-08-08
  • Python單例模式實(shí)例詳解

    Python單例模式實(shí)例詳解

    這篇文章主要介紹了Python單例模式,結(jié)合實(shí)例形式分析了單例模式的概念、實(shí)現(xiàn)與使用方法、已經(jīng)相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-03-03
  • 解讀Python中字典的key都可以是什么

    解讀Python中字典的key都可以是什么

    這篇文章主要介紹了解讀Python中字典的key都可以是什么,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 解決Pyinstaller 打包exe文件 取消dos窗口(黑框框)的問題

    解決Pyinstaller 打包exe文件 取消dos窗口(黑框框)的問題

    今天小編就為大家分享一篇解決Pyinstaller 打包exe文件 取消dos窗口(黑框框)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06

最新評(píng)論

乐昌市| 通河县| 平顺县| 揭东县| 浪卡子县| 黔南| 剑河县| 浪卡子县| 三门峡市| 邛崃市| 双鸭山市| 德安县| 富平县| 南丹县| 旺苍县| 南华县| 上饶县| 天柱县| 忻城县| 长顺县| 英吉沙县| 嘉荫县| 读书| 孟连| 连山| 夏河县| 任丘市| 襄汾县| 西乡县| 南乐县| 将乐县| 河西区| 平果县| 慈溪市| 民乐县| 邻水| 罗城| 修武县| 禹城市| 迭部县| 东港市|