Python 패키지 사용 방법

3612 단어 Python폐쇄 하 다
Python 패키지 사용 방법
내장 함수 의 비 부분 변수
패키지 에 들 어가 기 전에,우 리 는 먼저 패키지 함수 와 비 국부 변 수 를 알 아야 한다.
함수 에서 다른 함 수 를 내장 함수 라 고 정의 합 니 다.내장 함 수 는 포위 범위 내의 변 수 를 방문 할 수 있 습 니 다.
Python 에서 이 비 부분 변 수 는 기본 적 인 상황 에서 만 읽 을 수 있 습 니 다.우 리 는 이 를 비 부분 변수(nonlocal 키 워드 를 사용)로 명시 해 야 수정 할 수 있 습 니 다.
다음은 부분 변수 가 아 닌 내장 함수 에 접근 하 는 예제 입 니 다.

def print_msg(msg):
# This is the outer enclosing function

  def printer():
# This is the nested function
    print(msg)

  printer()

# We execute the function
# Output: Hello
print_msg("Hello")

내장 함수 printer()가 폐쇄 함수 의 비 부분 변수 msg 에 접근 할 수 있 음 을 볼 수 있 습 니 다.
패 킷 함수 정의
위의 예 에서 함수 printmsg()의 마지막 줄 에서 printer()함 수 를 호출 하지 않 고 되 돌려 줍 니 다.무슨 일이 일어 날 까요?이 함수 정의 아래-

def print_msg(msg):
# This is the outer enclosing function

  def printer():
# This is the nested function
    print(msg)

  return printer # this got changed

# Now let's try calling this function.
# Output: Hello
another = print_msg("Hello")
another()

이것 은 심상 치 않다.
print_msg()함 수 는 문자열'Hello'를 사용 하여 호출 합 니 다.되 돌아 오 는 함 수 는 다른 이름 으로 연결 되 어 있 습 니 다.another()를 호출 할 때,비록 우 리 는 print 를 완 성 했 지만msg()함수 의 실행 이지 만 이 메 시 지 를 기억 합 니 다.
일부 데이터(Hello)가 코드 에 추 가 된 이 기술 은 Python 에서 패키지 라 고 부른다.
변수 가 범 위 를 초과 하거나 함수 자체 가 현재 네 임 스페이스 에서 삭제 되 더 라 도 폐쇄 범위 내의 값 을 기억 합 니 다.
출력 을 보기 위해 Python 셸 에서 다음 내용 을 실행 해 보십시오.

>>> del print_msg
>>> another()
Hello
>>> print_msg("Hello")
Traceback (most recent call last):
...
NameError: name 'print_msg' is not defined
가방 은 언제 닫 습 니까?
위의 예 를 통 해 알 수 있 듯 이 내장 함수 가 폐쇄 범위 내의 값 을 참조 할 때 Python 에서 패 키 지 를 사용 합 니 다.
Python 에서 패 킷 을 만 드 는 데 만족 해 야 할 기준 은 다음 과 같 습 니 다-
  • 내장 함수(함수 내부 함수)가 있어 야 합 니 다.
  • 내장 함 수 는 폐쇄 함수 에서 정 의 된 값 을 참조 해 야 합 니 다.
  • 패 킷 함 수 는 패 킷 함 수 를 되 돌려 야 합 니 다.
  • 폐쇄 는 언제 사용 합 니까?
    그럼 폐쇄 는 뭐 가 좋아요?
    패 킷 을 닫 으 면 전역 값 을 사용 하지 않 고 특정한 형식의 데이터 숨 김 을 제공 할 수 있 습 니 다.그것 은 또한 대상 을 대상 으로 문 제 를 해결 하 는 해결 방안 도 제공 할 수 있다.
    클래스 에 방법 이 거의 없 을 때 폐쇄 는 대체 적 이 고 우아 한 해결 방안 을 제공 할 수 있다.그러나 속성 과 방법의 수량 이 커지 면 한 가지 유형 을 더 잘 실현 할 수 있다.
    이것 은 간단 한 예 입 니 다.패 킷 을 닫 는 것 이 정의 클래스 와 생 성 대상 보다 우선 할 수 있 습 니 다.
    
     
    def make_multiplier_of(n):
      def multiplier(x):
        return x * n
      return multiplier
    
    # Multiplier of 3
    times3 = make_multiplier_of(3)
    
    # Multiplier of 5
    times5 = make_multiplier_of(5)
    
    # Output: 27
    print(times3(9))
    
    # Output: 15
    print(times5(3))
    
    # Output: 30
    print(times5(times3(2)))
    
    
    Python 의 장식 기 는 클 로즈 드 백 을 광범 위 하 게 사용 할 수 있 습 니 다.주의해 야 할 것 은 폐쇄 함수 에 포 함 된 값 을 찾 을 수 있다 는 것 이다.
    모든 함수 대상 에 가 있 습 니 다.closure__속성,패키지 함수 라면 셀 대상 의 원 그룹 을 되 돌려 줍 니 다.위의 예 를 참고 하여 우 리 는 times 3 과 times 5 가 폐쇄 함수 라 는 것 을 알 고 있다.
    
    >>> make_multiplier_of.__closure__
    >>> times3.__closure__
    (<cell at 0x0000000002D155B8: int object at 0x000000001E39B6E0>,)
    셀(cell)대상 은 닫 힌 값 을 저장 하 는 속성 이 있 습 니 다:cellcontents。
    
    >>> times3.__closure__[0].cell_contents
    3
    >>> times5.__closure__[0].cell_contents
    5
    
    
    궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기