日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python怎么接外活_Python三大活器

發(fā)布時間:2023/12/19 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python怎么接外活_Python三大活器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.迭代器

可迭代的:能夠被for循環(huán)都是可迭代的,諸如:列表、元組、集合、字典、字符串等

from collections import Iterable

l = [1, 2, 3, 4]

t = (1, 2, 3, 4)

d = {1: 2, 3: 4}

s = {1, 2, 3, 4}

print(isinstance(l, Iterable))

print(isinstance(t, Iterable))

print(isinstance(d, Iterable))

print(isinstance(s, Iterable))

// 輸出結(jié)果:

True

True

True

True

可迭代協(xié)議:內(nèi)部實現(xiàn)了__iter__方法

print("__iter__" in dir(l))

print("__iter__" in dir(t))

print("__iter__" in dir(d))

print("__iter__" in dir(s))

// 輸出結(jié)果:

True

True

True

True

迭代器:是訪問集合的一種方法,擁有_inter_和_next_方法

a = iter(l) # iter()方法生成迭代器,參數(shù)必須是可迭代對象;iter()方法等同"__iter__()"

print(a)

while true:

try:

print(next(a)) # next()方法對迭代器取值,等同于"__next__()"

except StopInteration:

break

// 輸出結(jié)果:

# 列表迭代器內(nèi)存地址

1

2

3

4

特點:

1.訪問者不需要關(guān)心迭代器內(nèi)部結(jié)構(gòu),僅需要通過next()方法不斷去取下一個內(nèi)容

2.不能夠隨機訪問集合中的某個值,只能夠從頭到尾依次訪問且不能回退

3.便于循環(huán)比較大的數(shù)據(jù)集合,節(jié)省內(nèi)存

總結(jié):能夠被for循環(huán)肯定是可迭代對象,但不一定是迭代器

備注:關(guān)于for循環(huán)是基于迭代器協(xié)議的一種遍歷方法,先調(diào)用可迭代對象的iter()方法將其轉(zhuǎn)化成迭代器,然后使用迭代器協(xié)議去實現(xiàn)循環(huán)訪問

2.生成器

本質(zhì):迭代器

定義:一個函數(shù)調(diào)用時返回一個迭代器,那這個函數(shù)就是生成器;如果該函數(shù)中包含yield語法,則這個函數(shù)會成為生成器函數(shù)

生成器函數(shù):一個包含yield語法的函數(shù),yield可以從函數(shù)中返回值,不同return(程序結(jié)束),調(diào)用生成器函數(shù)會得到可迭代的對象,每一次獲取這個可迭代對象的值,就能推動函數(shù)的執(zhí)行,獲取新的返回值,直到函數(shù)結(jié)束(關(guān)于send()方法相同并傳遞給上一個yield)

列表推導(dǎo)式:list1=['學(xué)生%s' %i for i in range(10)]

生成器表達式:list1=('學(xué)生%s' %i for i in range(10)])

1.把列表解析的[]換成()得到的就是生成器表達式

2.列表解析與生成器表達式都是一種便利的編程方式,只不過生成器表達式更節(jié)省內(nèi)存

3.裝飾器

本質(zhì):一個閉包函數(shù)

功能:在不改變原函數(shù)的調(diào)用情況下對原函數(shù)功能進行擴展

閉包:在一個外函數(shù)中定義一個內(nèi)函數(shù),內(nèi)函數(shù)引用外函數(shù)的臨時變量,并且外函數(shù)的返回值是內(nèi)函數(shù)

閉包函數(shù):內(nèi)部函數(shù)對外部作用域而非全局作用域的引用,該內(nèi)部函數(shù)稱之為閉包函數(shù)

閉包好處:可以讀取函數(shù)內(nèi)部的變量,這些變量的值始終保持在內(nèi)存中,不會因為外函數(shù)調(diào)用后回收

裝飾器格式:

from functools import wraps

def decorator(func):

@wraps(func) # 幫助查看函數(shù)信息的方法

def inner(*args,**kargs):

print("before...")

res = func(*args,**kargs)

print("after...")

return res

returen inner

def sum(a,b):

return a+b

# 使用語法糖:

@decorator ==> sum = decorator(sum) = inner

res_sum = sum(1,2) ==> res_sum = inner(1,2)

多個裝飾器:

def wrapper1(func):

def inner():

print('wrapper1 ,before func')

func()

print('wrapper1 ,after func')

return inner

def wrapper2(func):

def inner():

print('wrapper2 ,before func')

func()

print('wrapper2 ,after func')

return inner

@wrapper2

@wrapper1

def f():

print('in f')

f()

// 輸出結(jié)果:按語法糖順序優(yōu)先執(zhí)行before內(nèi)容,再去執(zhí)行after內(nèi)容

wrapper2 ,before func

wrapper1 ,before func

in f

wrapper1 ,after func

wrapper2 ,after fun

總結(jié)

以上是生活随笔為你收集整理的python怎么接外活_Python三大活器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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