내장 된 간단한 함수 발생기, 유도, - 열 두번째 날에 day12_ 만 연봉

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())   # 查看当前空间的变量

추천

출처www.cnblogs.com/NiceSnake/p/11284895.html