python 에서 함수 값 을 변수 에 할당 할 때 주의해 야 할 문제 들
본 고 는 주로 python 이 함 수 를 변수 에 할당 할 때 주의해 야 할 문제 들 을 소개 합 니 다.여러분 이 참고 하여 공부 할 수 있 도록 공유 합 니 다.다음은 더 이상 말 하지 않 겠 습 니 다.상세 한 소 개 를 살 펴 보 겠 습 니 다.
두 가지 함수 가 변수 에 할당 하 는 형식 을 본 적 이 있 습 니 다.하 나 는?
a=f
다른 하 나 는...
a=f()
이 두 가지 형식 은 차이 가 있 으 니 각각 총 결 해 보 자.1.a=f 형 은 변 수 를 가리 키 는 함수 에 속한다.
코드 로 확인 하기:
>>> f = abs
>>> f(-10)
10
변수 f 가 abs 함수 자 체 를 가리 키 고 있 음 을 설명 합 니 다.직접 호출abs()
함수 와 호출 변수f()
는 완전히 같다.이것 은 료 설 봉 선생님 python 튜 토리 얼 의 예 입 니 다.현재 호출f()
과 호출abs()
은 같 습 니 다.공장 함수 의 예 를 하나 더 들 자.
def maker(N):
def action(X):
return X**N
return action
이 내장 함수 의 외층 반환 값 은 내층 함수 의 함수 이름 입 니 다.괄호 가 없 는 지 주의 하 십시오.여기에 괄호 가 있 는 지 없 는 지 는 큰 차이 가 있 습 니 다.이 때 외부 함수 호출:
f=maker(2)
그러면 위 에서 말 한 바 와 같이 f 는 action 함 수 를 가리 키 고 제한 조건 은 N=2 이 며 f 는 N 과 2 시의 action 함수 로 이해 할 수 있다.우 리 는 그것 을 호출 합 니 다.
>>> f(3)
9
f 와 action 함수 가 같다 는 것 을 증명 합 니 다.2.a=f()형 은 f()의 반환 값 을 a 에 부여 하 는 과정 에 속한다.
여기 있 는 a 는
f()
의 반환 값 만 받 습 니 다.f()
반환 값 이 없 으 면 a 는 None 로 부 여 됩 니 다.여기 서 주의해 야 할 것 은a=f()
의 집행 과정 에서f()
한 번 실 행 될 것 이다.이것 도 내 가 방금 알 게 된 것 이다.예 를 들 어:
>>> def add(x,y):
z=x+y
print(z)
>>>a=add(3,4)
7
여 기 는 하나의 할당 문 만 실 행 했 지만 결과 7 을 출력 했 습 니 다.할당 과정 함수 add 가 실 행 했 음 을 설명 합 니 다.그러나 a 의 값 은 None 이 고 print 문 구 를 통 해서 만 표시 할 수 있 습 니 다.할당 프로 세 스 함수 만 실행 되 는 것 이 아니 라 return 구문 에 도 마찬가지 입 니 다.
>>>def log(func):
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper
>>>@log
>>>def now():
print('2015-3-25')
이것 은 료 설 봉 선생님 python 튜 토리 얼 장식 기 1 절의 루틴 입 니 다.처음에 저 는return func(*args,**kw)
이 문 구 는now()
함수(즉 func 함수)의 반환 값 을 되 돌려 주 는 것 이 라 고 생각 했 습 니 다.나중에 now 함수 가 반환 값 이 없 는 것 을 발 견 했 습 니 다.즉,None 이기 때문에 사실은 이 문 구 는 할당 과정 에 있 습 니 다. func(*args,**kw)
함수 now 의 print 문 구 를 실 행 했 습 니 다.다음 연습 문제 에서 하나의 변형 은 함수 호출 전후 에'begin call'과'end call'을 인쇄 하 라 는 것 입 니 다.다음 네티즌 의 프로그램 은 이렇게 쓰 여 있 습 니 다.
def wrapper(*args,**kw):
print(t+'begin call')
result=func(*args,**kw)
print(t+'end call')
return result
처음에는 왜result=func(*args,**kw)
라 는 말 을 사 용 했 는 지 잘 이해 하지 못 했 는데 나중에 이해 한 후에 야 할당 자체 가 의미 가 없다 는 것 을 알 게 되 었 다.다만 이 말 은 동시에 func 함수 가 실 행 했 기 때문에 썼 다.
def wrapper(*args,**kw):
print(t+'begin call')
func(*args,**kw)
print(t+'end call')
결과 도 마찬가지다.총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.