Python 함수 선언 우선 순위 문제 해결

2541 단어 python함수.성명
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 함수 성명 순서 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기