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
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.