Python 함수 선언 우선 순위 문제 해결
foo()
def foo():
print("hello")
실행 중 오류 가 발생 할 수 있 습 니 다.NameError: name 'foo' is not defined
이 때 foo()호출 코드 를 이 함수 의 성명 뒤에 두 어야 합 니 다.
def foo():
print("hello")
foo()
이렇게 집행 하면 모든 것 이 정상 이다.이 불상 은 C 언어 에서 함수 호출 은 미리 설명 해 야 하 는 것 과 같 습 니 다.예 를 들 어 C 언어 에서 뒤의 정 의 를 호출 할 함 수 는 작성 해 야 합 니 다.
void foo();
int main() {
foo();
}
void foo() {
printf("Hello");
}
실제로 Python 에는 함수 가 미리 설명 되 어 있 지 않 고 자바 처럼 함수 가 임의의 위치 에 쓸 수 없습니다.자바 는 컴 파일 형 언어 이 고 Python 은 해석 형 이기 때 문 입 니 다.호출 된 함수 가 반드시 소스 코드 차원 에서 호출 자 앞 에 정의 되 어야 하 는 것 도 아니다.
Python 에서 함수 성명 의 순 서 는 제 가 이해 하기 로 는 두 가지 규칙 이 있 습 니 다.
파 이 썬 소스 코드 는 위 에서 아래로 해 석 됩 니 다
def foo():
bar()
if __name__ == '__main__':
foo()
def bar():
print("hello")
Python 은 첫 번 째 줄 에서 네 번 째 줄 의 입구 까지 설명 하고 다시 뛰 어 올 라 첫 번 째 줄 의 foo()함수 로 호출 되 며,그 중의 bar()함수 가 아직 해석 되 지 않 았 기 때문에 알려 줍 니 다.NameError: name 'bar' is not define
좋 은 분석 도구 가 있 습 니 다http://pythontutor.com/live.html#mode=edit위의 코드 를 보 겠 습 니 다.
두 번 째 줄 bar()를 설명 할 때 Global frame 에는 foo 만 있 고 bar 는 존재 하지 않 습 니 다.
하면,만약,만약...
def foo():
bar()
def bar():
print("hello")
if __name__ == '__main__':
foo()
위 코드 실행 오류 없 음,출력hello
foo()가 호출 한 bar()도 아래 에서 설명 하지 않 았 습 니까?그래서 이 점 은 C 와 다르다.
4,567915 도 써 보 세 요.
8 번 째 줄 을 설명 할 때 Global frame 에서 foo,bar 가 모두 있어 서 성공 적 으로 호출 할 수 있 습 니 다.
이때 의 이 해 는 이렇다.Python 이 첫 번 째 줄 에서 일곱 번 째 줄 의 프로그램 입구 까지 위 에서 아래로 해석 할 때 foo()는 실제 bar()를 호출 하지 않 았 지만 foo()와 bar()함수 가 모두 설명 되 었 기 때문에 고 개 를 돌려 foo()와 bar()간 에 어떻게 호출 해도 무방 하 다.
따라서 가장 좋 은 실천 방법 은 프로그램의 입 구 를 코드 의 맨 아래 에 두 는 것 이다.그러면 그 앞의 함 수 는 아무리 성명 순서 가 있어 도 상관없다.
이상 은 Python 함수 가 선후 순 서 를 설명 하 는 문 제 를 해결 하 는 상세 한 내용 입 니 다.python 함수 성명 순서 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.