day12
발전기
반복자 : 파이썬은 공간 절약형 도구를 내장
발전기의 특성은 반복자입니다
반복자와 발전기 사이의 차이점은 하나 pyhton 자신을 작성하는 프로그래머와 함께 제공
발전기를 쓰기
기반 기능
함수에서 복귀 발전기를 수득 재기록
함수 이름은 () 발전기를 생산하는
반환 더 쓰기,하지만의 구현 수
수율은 더 쓸 수 있습니다, 당신은 또한 많은 시간을 반환 할 수 있습니다
__next A를 __ ** ()는 수율 ** (A)에 대응
______ 다음 ______ () == 다음 () : 다음 권장 ()
______ ______ 여행 () == 여행 ()
수율은 집행의 위치를 기록합니다, 반환
생성기 루프를 얻기 위해 사용될 수있다
수율에서 하나 개의 반환 반복 가능 객체에 의해 요소의 하나 -
수율 임시 일시 중지 루프와 루프 동안 내부에서 작동 할 수
장점 : 공간을 절약 - 불활성 메커니즘을
역행하지 않음
처분 할 수있는
수율에 해당하는 다음
def func():
print(123)
return '你好'
func()
---------------------------------
def func():
if 3>2:
yield '你好'
if 4>2:
yield '我好'
yield '大家好'
g = func() # 产生一个生成器
print(next(g))
print(next(g))
print(next(g))
for i in g:
print(1)
while True:
try:
print(g.__next__())
except StopIteration:
break
---------------------------------
def foo():
for i in range(10):
pass
yield i
count = 1
while True:
yield count
count += 1
g = foo()
# print(next(g)) # 推荐使用
# print(next(g))
# print(next(g))
# print(next(g))
# print(next(g))
# for i in g:
# print(i)
坑 —— 会产生新的生成器
print(next(foo()))
print(next(foo()))
보내다()
# def gen(name):
# print(f'{name} ready to eat')
# while 1:
# food = yield
# print(f'{name} start to eat {food}')
------------------------------------------------------
# dog = gen('alex')
# next(dog)
# next(dog)
# next(dog)
------------------------------------------------------
# def gen(name):
# # print(f'{name} ready to eat')
# while 1:
# food = yield 222
# print(f'{name} start to eat {food}')
# dog = gen('alex')
# next(dog) # 第一次必须用next让指针停留在第一个yield后面
# 与next一样,可以获取到yield的值
# ret = dog.send('骨头')
# print(ret)
------------------------------------------------------
# def gen(name):
# print(f'{name} ready to eat')
# while 1:
# food = yield
# print(f'{name} start to eat {food}')
------------------------------------------------------
# dog = gen('alex')
# next(dog)
# # 还可以给上一个yield发送值
# # next(dog)
# dog.send('骨头')
# dog.send('狗粮')
# dog.send('香肠')
Builder 응용 프로그램 시나리오
def func():
lst = []
for i in range(10000):
lst.append(i)
return lst
print(func())
---------------------------------
def func():
for i in range(10000):
yield i
g = func()
for i in range(50):
print(next(g))
---------------------------------
def func():
lst = ["牛羊配","老奶奶花生米","卫龙","虾扯蛋","米老头","老干妈"]
for i in lst:
yield i
g = func()
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
---------------------------------
def func():
lst = ["牛羊配","老奶奶花生米","卫龙","虾扯蛋","米老头","老干妈"]
lst2 = ["小浣熊","老干爹","亲嘴烧","麻辣烫","黄焖鸡","井盖"]
yield from lst1
yield from lst2
g = func()
print(next(g))
print(next(g))
print(next(g))
# for i in g:
# print(i)
유도
목록 함축 :
순환 유도 : 순환 변수 (변수 처리 후)]
필터 유도 [가공 조건을 순환시키기위한 변수 (처리 후의 변수)]
# lst = []
# for i in range(20):
# lst.append(i)
# print(lst)
# list推导式
# print([i for i in range(20)])
------------------------------------------------------
# 循环模式
# [变量 for i in range(20)]
# print([i+1 for i in range(10)])
------------------------------------------------------
# 筛选模式
# lst = []
# for i in range(20):
# if i % 2 == 0:
# lst.append(i)
# print(lst)
# print([i for i in range(20) if i % 2 == 0])
# [变量(加工后的变量) for循环 加工方式]
# print([i for i in range(50) if i % 2 == 1])
# print([i for i in range(1,50,2)])
------------------------------------------------------
list二层嵌套for:
# print([i for i in range(20) for n in range(10)])
lst = []
for i in range(20):
for n in range(10):
lst.append(i)
print(lst)
빌더 유도 :
루프 순환 유도 :( 변수 (처리 후의 변수))
가공 조건을 순환 스크리닝 유도 :( 변수 (처리 후의 변수))
# 循环模式:
# g = (i for i in range(20))
# print(next(g))
# print(next(g))
# print(next(g))
# print(list((i for i in range(20))))
------------------------------------------------------
# 筛选模式
# g = (i for i in range(50) if i % 2 == 1)
# for i in g:
# print(i)
------------------------------------------------------
二层for嵌套:
g = (i for i in range(20) for n in range(10))
for i in g:
print(i)
유도를 설정 : 설정 ()
{키 : 루프 처리 조건 값}
# 集合推导式:(了解)
# print({i for i in range(10)})
# print({i for i in range(10) if i % 2 == 0})
------------------------------------------------------
二层for嵌套:(去重)
print({i*n for i in range(20) for n in range(10)})
print(len({i*n for i in range(20) for n in range(10)}))
사전 유도 : {}
루프 변수 {(처리 후의 변수) 처리 조건}
# 字典推导式:(了解)
# print({i:i+1 for i in range(10)})
# print({i:i+1 for i in range(10) if i % 2 == 0})
# {键:值 for循环 加工条件}
------------------------------------------------------
二层for嵌套:
print({i:n for i in range(20) for n in range(10,20)})
dic = {}
for i in range(20):
for n in range(20):
dic[i] = n
print(dic)
내장 함수
평가 () : 대답 내부 계산 문자열
간부 () : 코드 답 내부 문자열
취업 및 영어 연수 과정을 사용할 수 없습니다
해시 () 데이터 유형을 분석하는 것은 아니다 불변
) (도움 : 소스 코드를 얻을
호출 () : 심판이 호출되지 않습니다
INT ()
플로트 () : 부동 소수점으로 변환됩니다
() 단지 : 복수
빈 () : 바이너리로 변환
간섭 단층 촬영 () : 8 진수로 변환
진수 () : 16 진수로 변환
divmod (5,2) :( 2,1) 몫 이상 2 1
라운드 () : 다섯 오프 여섯, 이상한 변화도 변경, 기본, 당신은 몇 가지 예약을 정수 지정할 수있다
POW (2,3) : 전력
바이트 (S, 인코딩 = "UTF-8")의 변환 바이트
ORD () : ASCII 코드 비트 전류 코드
CHR () : 내용으로 코드 비트를 찾을 수
에 repr () : 프로토 타입은 절대적으로 산산조각
모든 () : 요소에 해당하는 여부를 결정
임의의 ()에 해당 요소가 있는지 여부를 판단
전역 () : 전역 변수 공간을 확인
지역 주민 () : 현재의 공간 변수보기, 그냥 빈 사전을 인쇄하지, 사전이 인쇄되어 있습니다
# s = """
# for i in range(10):
# print(i)
# """
------------------------------------------------------
# s1 = """
# def func():
# print(123)
# func()
# """
# print(eval(s))
# print(exec(s1)) # 牛逼 不能用
------------------------------------------------------
# print(hash("asdfas"))
------------------------------------------------------
# print(help(list))
# help(dict)
------------------------------------------------------
# def func():
# pass
# print(callable(func)) # 查看是否可调用
------------------------------------------------------
# print(float(2)) # 浮点数
# print(complex(56)) # 复数
------------------------------------------------------
# print(oct(15)) # 八进制
# print(hex(15)) # 十六进制
------------------------------------------------------
# print(divmod(5,2)) # (2, 1) 2商 1余
------------------------------------------------------
# print(round(5.3234,2)) # 四舍五入 -- 默认是整数,可以指定保留小数位
------------------------------------------------------
# print(pow(2,3)) # 幂
# print(pow(2,3,4)) # 幂,余
------------------------------------------------------
# s = "alex"
# print(bytes(s,encoding="utf-8"))
------------------------------------------------------
# print(ord("你")) # 当前编码
# print(chr(20320))
------------------------------------------------------
# s = "C:\u3000"
# print(repr(s))
------------------------------------------------------
# print("\u3000你好")
------------------------------------------------------
# lst = [1,2,3,False,4,5,6,7]
# print(all(lst)) # 判断元素是否都为真 相似and
# print(any(lst)) # 判断元素是否有真 相似or
------------------------------------------------------
# name = 1
# def func():
# a = 123
# # print(locals())
# # print(globals())
# func()
------------------------------------------------------
# print(globals()) # 全局空间中的变量
# print(locals()) # 查看当前空间的变量