python 노트 17

5668 단어
1. 오늘 의 내용
  • 교체 기 (3 *)
  • 생 성기 (4 *)
  • 인 테 리 어 (5 *)
  • 프로젝트 구조
  • logging 모듈
  • 2. 내용 회고 & 숙제
    2.1 내용 회고
    2.1.1 함수 (내장 / 사용자 정의)
  • 기본 함수 구조
    def func(a1,a2):
        pass
  • 매개 변수
  • 반환 값
  • 실행 함수
  • 함수 소 고급
  • 함수 변수 하기
  • 함수 매개 변수 만 들 기
  • 함수 중 고급
  • 함수 반환 값
  • 함수 의 내장
  • 인 테 리 어 & 패키지
  • 재 귀
  • 익명 함수
  • 내장 함수
  • 2.1.2 모듈 (내장 / 제3자 / 사용자 정의)
  • 정의 모듈
  • 내장: time / json / datetime / os / sys... 【 re 모듈 】
  • 제3자:
  • 설치:
  • pip 패키지 관리 도구: pip install xlrd
  • 소스 코드 설치:
  • 원본 패키지 다운로드: 압축 파일.
  • 압축 해제 파일
  • cmd 창 을 열 고 이 디 렉 터 리 에 들 어 갑 니 다: cd C: \ Python 36 \ Lib \ site - packages
  • 실행: python 36 setup. py build
  • 실행: python 36 setup. py install

  • 설치 경로: C: \ Python 36 \ \ Lib \ \ site - packages
  • 당신 이 알 고 있 는 제3자 모듈:
  • xlrd, xlwd \ # excel 의 읽 기와 쓰기
  • requests


  • 사용자 정의
  • py 파일
  • 폴 더 __init__.py \ # py2 에 있어 야 합 니 다

  • 호출 모듈
  • import
  • import 모듈 1 모듈 1. 함수 ()
  • import 모듈 1. 모듈 2. 모듈 3 모듈 1. 모듈 2. 모듈 3. 함수 ()
  • from xx import xxx
  • from 모듈. 모듈 import 함수 함수 ()
  • from 모듈. 모듈 import 함수 as f ()
  • from 모듈. 모듈 import * 함수 1 () 함수 2 ()
  • from 모듈 import 모듈 모듈. 함수 ()
  • from 모듈 import 모듈 as m. 함수 ()
  • 특수 상황:
  • import 폴 더 의 기본 로드 __init__.py 는 -- init --. py 파일 의 내용 을 호출 합 니 다.
  • from 파일 import * 는 파일 의 함 수 를 직접 사용 할 수 있 습 니 다.



  • 2.1.3 기타
  • 두 값 데이터 교환
  • 유도 식
  • 리스트 (*)
  • 사전
  • 집합

  • 3. 오늘 의 내용
    클래스 와 대상
    3.1 교체 기
    자 기 는 교체 기 를 쓸 줄 모 르 고 사용 만 합 니 다.
    작업: 목록 의 모든 데 이 터 를 보 여 주세요.
  • while + 색인 + 카운터
  • 교체 기 는 특정한 대상 (str / list / tuple / dict / set 류 가 만 든 대상) - 교체 가능 한 대상 중의 요 소 를 하나씩 가 져 옵 니 다. 이미지: __next__ 방법 이 있 고 호출 할 때마다 교체 가능 한 대상 중의 요 소 를 가 져 옵 니 다 (이전 부터 다음 까지 하나씩 가 져 옵 니 다).
  • 목록 을 교체 기로 변환 합 니 다.
  • v1 = iter([11,22,33,44])
  • v1 = [11,22,33,44].__iter__()

  • 교체 기 가 모든 값 을 가 져 오 려 고 합 니 다. 반복 호출 val = v1.__next__()
    v1 = [11,22,33,44]
    
    #         
    v2 = iter(v1)
    result1 = v2.__next__()
    print(result1)
    result2 = v2.__next__()
    print(result2)
    result3 = v2.__next__()
    print(result3)
    result4 = v2.__next__()
    print(result4)
    result5 = v2.__next__()
    print(result5)
    """
    # v1 = "alex"
    # v2 = iter(v1)
    # while True:
    #     try:
    #         val = v2.__next__()
    #         print(val)
    #     except Exception as e:
    #         break
  • 마지막 까지 교체 되 었 습 니 다. 오류 가 발생 할 때 까지 StopIteration 오 류 는 교체 가 완료 되 었 음 을 나타 냅 니 다.
  • 한 대상 이 교체 기 인지 아 닌 지 를 어떻게 판별 합 니까? 내부 에 있 는 지 __next__ .

  • for 순환
    v1 = [11,22,33,44]
    
    # 1.    v1      
    # 2.          .__next__()
    # 3.     
    for item in v1:
        print(item)
  • 3.2 교체 가능 대상
  • 내부 에 __iter__() 방법 이 있 고 교체 기 를 되 돌려 줍 니 다.(*)
    v1 = [11,22,33,44]
    result = v1.__iter__()
  • 순환 가능
  • 3.3 생 성기 (함수 의 변이)
    #   
    def func():
        return 123
    func()
    #      (      yield)
    def func():
        print('F1')
        yield 1
        print('F2')
        yield 2
        print('F3')
        yield 100
        print('F4')
    #           ,           。
    v1 = func()
    #        for  ,                    。
    for item in v1:
        print(item)
    def func():
        count = 1
        while True:
            yield count
            count += 1
            
    val = func()
    
    for item in val:
        print(item)

    요약: 함수 에 yield 가 존재 한다 면 이 함 수 는 생 성기 함수 입 니 다. 생 성기 함 수 를 호출 하면 생 성 기 를 되 돌려 줍 니 다. 생 성 기 는 for 순환 할 때 만 생 성기 함수 내부 의 코드 가 실 행 됩 니 다. 순환 할 때마다 yield 가 돌아 오 는 값 을 가 져 옵 니 다.for 순환 에 익숙 하지 않 습 니 다.
    def func():
        count = 1
        while True:
            yield count
            count += 1
            if count == 100:#      
                return
    
    val = func()
    for item in val:#item  yield   。
        print(item)

    예제: 파일 읽 기 (아래 페이지 별로 파일 읽 기, 페이지 당 10 줄)
    def func():
        """
                   ,            。
        :return:
        """
        cursor = 0
        while True:
            f = open('db', 'r', encoding='utf-8')#        redis
            #      redis[0:10]
            f.seek(cursor)
            data_list =[]
            for i in range(10):
                line = f.readline()
                if not line:
                    return
                data_list.append(line)
            cursor = f.tell()
            f.close()  #    redis   
    
    
            for row in data_list:
                yield row
    
    
    for item in func():
        print(item)

    기타 지식:
  • yeild from 키워드 【 미 달 】
  • 생 성기 유도 식 [미]
  • 총결산
  • 교체 기 는 교체 가능 한 대상 중의 요 소 를 하나씩 가 져 옵 니 다. 교체 기 대상 의 내 부 는 모두 가 있 습 니 다.next__방법, 하나씩 데 이 터 를 가 져 오 는 데 사용 합 니 다.
  • 대상 을 교체 할 수 있 고 for 순환 할 수 있 으 며 이런 대상 중 에는iter__방법 은 교체 기 (생 성기) 를 되 돌려 야 합 니 다.
  • 생 성기, 함수 내부 에 yield 가 있 으 면 생 성기 함수 이 고 호출 함 수 는 생 성 기 를 되 돌려 주 며 순환 생 성 기 를 할 때 함수 내부 코드 가 실 행 됩 니 다.특수 한 교체 기 (* *):
    def func():
        yield 1
        yield 2
        yield 3
    
    v = func()
    result = v.__next__()
    print(result)
    result = v.__next__()
    print(result)
    result = v.__next__()
    print(result)
    result = v.__next__()
    print(result)
    특수 한 교체 가능 대상:
    def func():
        yield 1
    
    v = func()
    result = v.__iter__()
    print(result)
  • 좋은 웹페이지 즐겨찾기