Python 공부 의 날 4

6772 단어
참고 문헌:http://www.cnblogs.com/alex3714/articles/5143440.html
 
교체 기: 교체 기 는 집합 요 소 를 방문 하 는 방식 이다.교체 기 대상 은 모든 요소 가 접근 이 끝 날 때 까지 집합 하 는 첫 번 째 요소 부터 접근 합 니 다.교체 기 는 앞으로 만 후퇴 하지 않 을 수 있 지만, 이것 도 아무것도 아니다. 왜냐하면 사람들 은 교체 도중에 후퇴 하 는 일이 매우 적기 때문이다.또 교체 기의 큰 장점 은 전체 교체 과정 에서 모든 요 소 를 미리 준비 하 라 고 요구 하지 않 는 다 는 것 이다.교체 기 는 특정한 요소 로 교체 할 때 만 이 요 소 를 계산 하 는데 그 전이 나 그 후에 요 소 는 존재 하지 않 거나 소 멸 될 수 있다.이 특징 은 몇 개의 G 파일 과 같은 거대 하거나 무한 한 집합 을 옮 겨 다 니 는 데 특히 적합 하 다.
 
특징:
  • 방문 자 는 교체 기 내부 의 구조 에 관심 을 가 질 필요 가 없고next__() 다음 내용 가 져 오기
  • 집합 중의 특정한 값 을 무 작위 로 방문 할 수 없고 처음부터 끝까지 순서대로 방문 할 수 밖 에 없다
  • 방문 절반 시 후퇴 불가
  • 순환 이 비교적 큰 데이터 집합 에 편리 하고 메모리 절약
  • 교체 기 생 성:
    >>> a = iter([1,2,3,4,5,])
    >>> a
    <list_iterator object at 0x0000013D1A8082E8>
    >>> a.__next__()
    1
    >>> a.__next__()
    2
    >>> a.__next__()
    3

     
    생 성기: 한 함수 가 호출 될 때 교체 기 를 되 돌려 줍 니 다. 이 함 수 는 생 성기 라 고 합 니 다. 함수 에 yield 문법 이 포함 되 어 있 으 면 이 함 수 는 생 성기 가 됩 니 다.
     
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    def cash_money(amount):
        while amount>0:
            amount -= 100
            yield 100
            print('')
    a = cash_money(500)
    print(type(a))
    print(a.__next__())
    print(a.__next__())
    print(a.__next__())
    print(a.__next__())
    print(a.__next__())

    실행 결과:
    < class' generator '> 100 왔 어!100 왔 어?100 왔 어?100 왔 어?100
    장식 기:
    장식 기 라 는 부분 은 어떻게 사용 하 는 지 대충 알 수 있 지만 어떤 것 인지 정리 하기 어렵 습 니 다. 제 이해 로 는 원 코드 를 바 꾸 지 않 고 원 함 수 를 포장 하고 확장 하 며 수요 에 따라 원 함수 에 더 많은 기능 을 추가 하 는 것 으로 정의 합 니 다.
     
    단순 장식 기 구현:
    def login(func):
        def inner(arg):
            print("passed user verification...")
            func(arg)
        return inner
    def home(name):
        print("welcome %s to home page"%name)
    @login #               @        ,          login  ,                
    def tv(name):
        print("welcome %s to TV page"%name)
    def movie(name):
        print("welcome %s to movie page"%name)
    tv("alex")

    실행 결과:
    passed user verification...welcome alex to TV page
    복잡 장식 기 구현:
    def Before(request,kwargs):
        print('before')
    
    def After(request,kwargs):
        print('after')
    
    def Filter(before_func,after_func):
        def outer(main_func):
            def wrapper(request,kargs):
    
                before_result = before_func(request,kargs)
                if(before_result != None):
                    return before_result;
    
                main_result = main_func(request,kargs)
                if(main_result != None):
                    return main_result;
    
                after_result = after_func(request,kargs)
                if(after_result != None):
                    return after_result;
    
            return wrapper
        return outer
    
    @Filter(Before, After)
    def Index(request,kargs):
        print('index')
    
    Index("alex","abc")

     
    실행 결과:
    beforeindexafter
     
    재 귀: 재 귀 알고리즘 은 자신의 알고리즘 을 직접 또는 간접 적 으로 호출 하 는 과정 이다.컴퓨터 컴 파일 러 에서 재 귀 알고리즘 은 큰 문 제 를 해결 하 는 데 매우 효과 적 입 니 다.
     
    귀속 알고리즘 이 문 제 를 해결 하 는 특징:
    (1) 재 귀 는 과정 이나 함수 에서 자신 을 호출 하 는 것 이다.
    (2) 재 귀 전략 을 사용 할 때 반드시 명확 한 재 귀 종료 조건 이 있어 야 하 며 재 귀 출구 라 고 부른다.
    (3) 재 귀 알고리즘 은 문 제 를 푸 는 것 이 간결 해 보이 지만 재 귀 알고리즘 은 문 제 를 푸 는 운행 효율 이 비교적 낮다.그래서 일반적으로 귀속 알고리즘 으로 프로그램 을 설계 하 는 것 을 제창 하지 않 는 다.
    (4) 재 귀적 호출 과정 에서 시스템 은 각 층 의 반환 점, 부분 변수 등 을 위해 스 택 을 열 어 저장 했다.재 귀 횟수 가 너무 많 으 면 스 택 이 넘 치기 쉽다.그래서 일반적으로 귀속 알고리즘 으로 프로그램 을 설계 하 는 것 을 제창 하지 않 는 다.
     
    요청:
    1. 매번 호출 할 때마다 규모 가 줄어든다 (보통 반 으로 줄어든다).
    2. 서로 인접 한 두 번 의 반복 사이 에 밀접 한 관 계 를 가진다. 첫 번 째 는 다음 을 위해 준비 해 야 한다 (보통 앞의 출력 은 다음 의 입력 으로 한다).
    3. 문제 의 규모 가 매우 큰 시간 에 재 귀적 호출 을 하지 않 고 직접 해답 을 제시 해 야 하기 때문에 매번 재 귀적 호출 은 조건 이 있다 (규모 가 직접 해답 의 크기 에 이 르 지 못 하 는 것 을 조건 으로). 무조건 재 귀적 호출 은 순환 에 들 어가 정상적으로 끝나 지 못 한다.
     
    재 귀 알고리즘 으로 피 보 나치 목록 인쇄:
    def func(arg1,arg2):
        if arg1 == 0:
            print(arg1)
            print(arg2)
        arg3 = arg1 + arg2
        print(arg3)
        if arg3 > 100:
            pass
        else:
            func(arg2, arg3)
    
    func(0,1)

     
    실행 결과:
    01123581321345589144
     
    정규 표현 식:
         ,       、     (  :Regular Expression,        regex、regexp RE),          。               、                 。         ,            、             。

     
    정규 표현 식 용법 은 블 로 그 를 참고 할 수 있 습 니 다.
    http://www.runoob.com/python/python-reg-expressions.html
    http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html
     
     
     

    좋은 웹페이지 즐겨찾기