1. O que é um fechamento?
Closures são referências a variáveis de funções internas (não globais) de funções externas, chamadas closures.
Pode tornar uma variável local residente na memória
Segundo, o iterador
- O objeto iterador é acessado a partir do primeiro elemento da coleção até que todos os elementos sejam acessados.
- O iterador só pode avançar sem retroceder.
- O iterador possui dois métodos básicos: iter () e next ()
- Objetos iteráveis: str, lista, tupla, conjunto, f (iterável, também iterador), dict
- Todos os objetos iteráveis acima têm uma função __iter __ ()
- iterável: objeto iterável com a função __iter __ () dentro
- iterador: O iterador, que contém os
recursos do iterador __iter __ () e __next __ () :
1. Economize memória
2. Mecanismo preguiçoso
3. Não pode ser repetido, só pode ser executado para baixo
lst = [1,2,3]
print(dir(lst)
lst = ["皇阿玛","皇额娘","容嬷嬷","紫薇"]
#获取迭代器
it = lst.__iter__()
#迭代器往外拿元素,__next__()
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
Stopiteration
A exceção StopIteration é usada para marcar a conclusão da iteração para impedir um loop infinito
lst = ["皇阿玛","皇额娘","容嬷嬷","紫薇"]
#获取迭代器
it = lst.__iter__()
#迭代器往外拿元素,__next__()
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
lst = ['皇阿玛','皇额娘','容嬷嬷','紫薇']
it = lst.__iter__()
while True:
try:
name = it.__next__()
print(name)
except StopIteration:
break
Terceiro, o gerador
-
A essência de um gerador é um iterador
-
Os três métodos de geração do gerador:
1. Através da função do gerador
2. Criando o gerador através da expressão do gerador
3. Através da conversão de dados -
função Gerador:
função contém o rendimento é um gerador de funções
(Nota: a função de gerador é executado, o gerador é adquirido, em vez de executar um gerador)
def func():
print("我爱苹果")
yield "也爱菠萝"
print("想吃汉堡")
yield "想喝可乐"
g = func()
print(g.__next__())
print(g.__next__())
- Expressão do gerador:
(resultado da variável no objeto iterável se filtro de condição) - Valores:
1, _ próximo_ ()
2, envia (valor) para passar um valor para a posição de rendimento anterior, o primeiro e o último rendimento não precisam passar o valor
3, pode para o loop
4, gerador de lista (g) - Várias derivações e expressões geradoras:
lista compreensões: [resultado para variável em objeto iterável se filtro]
lst = [i for i in range(1,15)]
print(lst)
#找出名字里带有两个e的
names = [['Tom','Billy','Jefferson','Andrew','Wesley','Steven',
'Joe'],['Alice','Jill','Ana','Wendy','Jennifer',
'Sherry','Eva']]
lst4 = [name for first in names for name in first if name.count('e') == 2 ]
print(lst4)
Derivação do dicionário: {Resultado da variável no objeto iterável se o filtro} Resultado => chave: valor
lst5 = ['alex','wusir','taibai','ritian']
lst6 = ['sb','active','white','niupi']
new_dict = {lst5[i]:lst6[i] for i in range(len(lst5))}
print(new_dict
Definir compreensão: {resultado para variável em objeto iterável se filtro} chave de resultado
Derivação do conjunto: pode nos ajudar a gerar diretamente um conjunto, as características do conjunto: não ordenado, não repetido. Portanto, a derivação definida tem sua própria função de deduplicação.
A sintaxe das expressões de gerador e compreensão de lista é basicamente a mesma, exceto que [] é substituído por ()
gen = (i para i no intervalo (1.100) se i% 2 == 0)
print (gen)
Resumo:
Lá de derivação, lista tipo derivação, dicionário derivação, o conjunto de derivação, não derivação tupla
expressão gerador :( resulta para variáveis em iterables se as condições do filtro)
gerador directamente para a expressão pode gerador objecto, O objeto gerador pode ser diretamente para o loop for.O
gerador possui um mecanismo lento