파 이 썬 장식 기 가 준 커피 에 재 료 를 좀 넣 어 주세요.
1.python 에서 함 수 는 1 등 시민 이 고 함수 도 대상 입 니 다.우 리 는 함 수 를 변수 에 부여 할 수 있다.
def make_cofe(type):
print(' : {}'.format(type))
get_cofe = make_cofe
get_cofe(' ')
#### #####
:
이 예 에서 우 리 는 함수 makecofe 에 변수 get 부여cofe,그 후에 get 호출cofe,함수 make 호출cofe()。2.함 수 를 매개 변수 로 하여 다른 함수 에 전달 합 니 다.
def make_cofe(type):
print(' : {}'.format(type))
def shop(func,type):
func(type)
shop(make_cofe,' ')
#### ####
:
이 예,우 리 는 makecofe 는 매개 변수 로 shop 에 들 어가 서 호출 합 니 다.3.함 수 는 끼 워 넣 을 수 있 습 니 다.
def shop(type):
def make_cofe(type):
print(' : {}'.format(type))
make_cofe(type)
shop(' ')
##### ####
:
이 코드 에서 우 리 는 함수 shop 내부 에서 함수 make 를 정의 했다.cofe 4.함수 의 반환 값 도 함수 대상(패키지 닫 기)일 수 있 습 니 다.
def shop():
def make_cofe(type):
print(' : {}'.format(type))
return make_cofe
get_cofe=shop()
get_cofe(" ")
#### #####
:
여기,함수 shop()의 반환 값 은 함수 대상 make 입 니 다.cofe 자체,그 후에 우 리 는 이 를 변수 get 에 부여 합 니 다.cofe,get 재 호출카페장식
다음은 본 격 적 으로 장식 기 공 부 를 시작 하 겠 습 니 다.우리 먼저 문 제 를 하나 생각해 보 자.만약 우리 가 커피숍 에 가서 커피 한 잔 을 원한 다 면,우 리 는 어떻게 실현 해 야 합 니까?그렇게 쓸 지도 몰라.
def cofe():
print(' ', end='')
cofe()
#### ####
그럼 우 리 는 지금 설탕 을 넣 은 커피 한 잔 을 마시고 싶 습 니 다.우 리 는 어떻게 써 야 합 니까?그렇게 생각 하 실 수도 있 습 니 다.그것 도 쉽 지 않 습 니 다.바로 cofe()함수 에서 고치 면 되 잖 아 요.
def cofe():
print(' ', end='')
cofe()
#### ####
그럼 문제 가 생 겼 습 니 다.만약 에 우리 가 지금 설탕 을 넣 은 커피 를 마시고 싶 지 않다 면 어떻게 해 야 합 니까?cofe()함수 에서 지 울 수 는 없 잖 아 요.그럼 설탕 을 넣 은 커피 를 마시고 싶 은 사람 이 있 고,설탕 을 넣 은 커피 를 마시고 싶 지 않 은 사람 이 있다 면 어떻게 해 야 할 지,두 개의 cofe()함 수 를 쓸 수 는 없 잖 아 요.그럼 문 제 를 가지 고 아래 코드 를 보 겠 습 니 다.
def add_sugar(func):
def add():
print(' ',end='')
func()
return add
def cofe():
print(' ',end='')
cofe = add_sugar(cofe)
print(" ",end='')
cofe()
#### #####
변수 cofe 는 내부 함수 add()를 가리 키 고 내부 함수 add()에 서 는 원 함수 cofe()를 호출 하기 때문에 마지막 에 cofe()를 호출 할 때'설탕 넣 기'를 먼저 인쇄 한 다음'커피'를 출력 합 니 다.여기 함수 addsugar()는 하나의 장식 기 입 니 다.진정 으로 실행 해 야 할 함수 cofe()를 감 싸 고 행동 을 바 꾸 었 지만 원 함수 cofe()는 변 하지 않 습 니 다.더 우아 한 화법 을 살 펴 보 자.
def add_sugar(func):
def add():
print(' ',end='')
func()
return add
@add_sugar
def cofe():
print(' ',end='')
print(" ",end='')
cofe()
##### #####
여기@문법 사탕 이 라 고 합 니 다.@addsugar 는 앞의 cofe=add 에 해당 합 니 다.슈 가(cofe)문 구 는 더욱 간결 할 뿐이다.따라서 프로그램 에 서 는 이런 표기 법 을 사용 하 는 것 을 권장 한다.자,우리 의 문 제 를 돌 이 켜 보 자.설탕 을 넣 은 커피 를 마시고 싶 은 사람 이 있 으 면 설탕 을 넣 은 커피 를 마시고 싶 지 않 은 사람 이 있다 면 어 떡 하지?장식 기 를 배 웠 다 면 간단 하지 않 겠 습 니까?설탕 을 넣 은 커피 를 마 시 려 면 설탕 을 넣 은 장식 기@add슈 가 에 게 설탕 을 넣 지 않 은 것 을 마 시 면 장식 기 를 넣 지 않 으 면 우 리 는 이 문 제 를 완벽 하 게 해결 할 수 있 습 니 다.함수 내 부 를 바 꾸 지 않 는 전제 에서 함수 에 새로운 기능 을 추가 하 였 습 니 다.지금까지 우 리 는 가장 간단 한 장식 기 를 다 배 웠 다.다음 에 우 리 는 한 가지 문 제 를 고려 하고 있 습 니 다.만약 에 원 함수 cofe()에서 인 자 를 장식 기 에 전달 해 야 한다 면 어떻게 합 니까?간단 한 방법 은 대응 하 는 장식 기 함수 add()에 해당 하 는 인 자 를 추가 할 수 있 습 니 다.
def add_sugar(func):
def add(type):
print(' ',end='')
func(type)
return add
@add_sugar
def cofe(type):
print('{} '.format(type),end='')
cofe(" ")
print()
cofe(" ")
#### #####
하지만 새로운 문제 가 생 겼 다.만약 내 가 또 하나의 함수(밀 크 티 함수)가 있다 면,add 를 사용 해 야 한다.슈 가()장식 기,그런데 이 새로운 함 수 는 두 개의 인자 가 있 는데 어떻게 해 야 하나 요?일반적인 상황 에서 우 리 는*args 와**kwargs 를 장식 기 내부 함수 add()의 매개 변수 로 합 니 다.*args 와**kwargs 는 임의의 수량 과 유형의 인 자 를 받 아들 이 는 것 을 의미 하기 때문에 설탕 장식 기 를 넣 으 면 다음 형식 으로 쓸 수 있 습 니 다.
def add_sugar(func):
def add(*args, **kwargs):
print(' ',end='')
func(*args, **kwargs)
return add
@add_sugar
def cofe(type):
print('{} '.format(type),end='')
@add_sugar
def milk_tea(type,num):
print('{} {} '.format(num,type), end='')
cofe(" ")
print()
milk_tea("xx ","4")
#### ####
4 xx
이렇게 하면 우리 의 커피 와 밀 크 티 는 모두 설탕 을 넣 을 수 있다.앞에서 우리 가 말 한 것 은 함수 의 장식 기 입 니 다.다음은 장식 기로 서 의 종 류 를 말씀 드 리 겠 습 니 다.클래스 장식 기 는 주로 함수 에 의존 합 니 다.call__(),클래스 의 인 스 턴 스 를 호출 할 때마다 함수call__()한 번 실 행 될 겁 니 다.
class Add_sugar:
def __init__(self, func):
self.func = func
self.add_suger = " "
def __call__(self, *args, **kwargs):
print(self.add_suger,end='')
return self.func(*args, **kwargs)
@Add_sugar
def cofe():
print(" ")
cofe()
#### #####
마지막 으로 우리 커피 에 설탕 도 넣 고 얼음 도 넣 어야 한다 면 우 리 는 어떻게 해 야 합 니까?우리 가 얼음 을 넣 는 장식 기 를 정 의 했 으 면 좋 겠 는데.
def add_sugar(func):
def add():
print(' ',end='')
func()
return add
def add_ice(func):
def add():
print(' ',end='')
func()
return add
@add_sugar
@add_ice
def cofe():
print(' ',end='')
cofe()
#### ####
파 이 썬 인 테 리 어 에 관 한 글 입 니 다.-커피 에 재 료 를 넣 어 드 리 는 글 은 여기까지 입 니 다.파 이 썬 인 테 리 어 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.