본문 바로가기
목차
Python

Entry Point - Python 과 C

by ds31x 2026. 6. 12.
728x90
반응형

Entry Point

Entry point
program의 실행 흐름이
처음으로 진입하는 지점을 의미함.

  • entryenter에서 온 말로, 기본 의미는 들어감, 진입, 들어가는 곳임.
  • entry point는 말 그대로 들어가는 지점, 즉 진입점을 의미함.
enter : 들어가다, 진입하다
entry : 들어감, 진입, 들어가는 곳
entry point : 들어가기 시작하는 지점. 진입점.

전통적인 C 언어에서의 Entry Point

전통적인 C 언어에서는 보통 main() 함수가 program의 entry point로 사용됨.

int main(void) {
    return 0;
}

C program이 실행되면, 다음과 같은 흐름을 거쳐서 main()함수가 호출됨:

  1. program 실행
  2. OS가 program을 memory에 load
  3. C runtime 초기화
  4. main() 함수 호출
  5. 사용자가 작성한 주요 code 실행

 

C program에서는 main() 함수가 사용자가 작성한 code의 주요 실행 흐름이 시작되는 지점인 entry point로 보면 됨.

  • C 언어에서는 main()이라는 이름이 특별한 의미를 가짐.
  • 함수 이름을 임의로 start(), run(), app() 등으로 바꾸면 일반적인 C program의 시작 함수로 인식되지 않음.

C에서 main()은 C runtime (CRT)이 program 실행을 시작하기 위해 호출하는 특별한 함수임.

 

CRT 와 entry point인 main() 에 대한 보다 자세한 건 다음을 참고:

2026.01.16 - [CE] - C Runtime (CRT) 이란 - CRT, POSIX, System call, ABI

 

C Runtime (CRT) 이란 - CRT, POSIX, System call, ABI

C Runtime( CRT )이란?C Runtime(CRT)은 다음을 가리킴:C 프로그램이 OS 위에서 실제로 실행되도록 만들어 주는 기본 실행 환경C로 만든 프로그램을 컴파일하면 CPU 기계어로 이루어진 실행 파일(binary)이

ds31x.tistory.com


Python Script에서의 Entry Point

Python에서는 상황이 조금 다름.

  • Python script에서는 보통 다음과 같은 방식으로 구현된 entry point 를 지정.
  • 굳이 main이라는 이름을 사용하지 않아도 되지만, 관례적으로 이를 사용함.
def main():
    print("Hello")

if __name__ == "__main__":
    main()

 

위 code의 실행 흐름은 다음과 같음.

  1. python script.py 실행
  2. file 전체가 위에서부터 실행됨
  3. __name__ == "__main__" 조건 확인
  4. 조건이 True이면 main() 호출
  5. program의 주요 실행 흐름이 main()으로부터 시작됨.

주의할 점은,
Python에서 main()이라는 함수 이름 자체가 특별한 것은 아니라는 점임.

 

즉, 다음 code도 정상적으로 동작함.

def start():
    print("Hello")

if __name__ == "__main__":
    start()

 

실제로 entry point로 동작을 하게 해주는 것은 main()이라는 이름이 아니라 다음 조건문임.

if __name__ == "__main__":
    main()
  • 이 조건문은 해당 file이 직접 실행될 때에만 내부 code를 실행하도록 해줌.
  • 다른 file에서 import될 경우에는 __name__ 값이 "__main__"이 아니므로, 해당 조건문 내부의 code가 실행되지 않음.
  • Special Variable__name__ 을 이용함.

Dunder 라고도 불리는 special variable 에 대해 좀 더 자세한 건 다음을 참고:

2023.10.10 - [Python] - [Python] __name__ : Special string variable

 

[Python] __name__ : Special string variable

__name__ 은Python에서 module에 할당되는 special attributes 중 하나로서,해당 module의 이름에 해당하는 문자열로 설정되어 있다.__name__은Python이 알아서 생성해주는special string attribute임.하지만, module이 comm

ds31x.tistory.com


참고: Python Package와 CLI Tool에서의 Entry Point

Python package나 CLI tool에서는 entry point 를 따로 설정해야 함.

  • Python package와 CLI tool 에서 entry point는
  • 특정 명령어를 실행했을 때 어떤 Python 함수를 호출할지를 등록하는 정보를 가리킴.

예를 들어 pyproject.toml에 다음과 같이 작성할 수 있음.

[project.scripts]
myapp = "mypackage.cli:main"

 

이는 다음을 의미함.

  1. myapp 명령 실행
  2. mypackage.cli module을 찾음
  3. 그 안의 main() 함수 호출

즉, 사용자가 terminal에서 다음과 같이 실행하면,

myapp

내부적으로는 다음 함수가 호출됨.

# mypackage/cli.py

def main():
    ...

CLI package에서
entry point는
명령어와 실제 실행될 Python 함수를 연결하는 등록 정보임.

보다 자세한 건 다음을 참고:

https://ds31x.tistory.com/673#5-6.-cli-%EB%AA%85%EB%A0%B9%EC%96%B4script-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0

 

uv 를 통한 wheel 빌드하기-uv_build, hatchling

이 글의 목적은 다음과 같음:uv 에서 ub_build 와 hatchling 이 어떻게 build backend로 동작하는지 이해하는 것.pyproject.toml 이 어떤 역할을 하는지 이해하는 것.2025.04.06 - [utils] - [Tool] Builder System (or Packaging

ds31x.tistory.com


C와 Python의 차이

C와 Python 모두 entry point 라는 용어가 존재하나 약간의 차이가 있음.

구분 C Python script
대표 entry point main() if __name__ == "__main__": 구조
main()의 의미 특별한 함수 이름 관례적으로 자주 쓰는 함수 이름
함수 이름 변경 가능 여부 일반적으로 불가능 가능
실행 방식 C runtime이 main() 호출 Python interpreter가 file을 위에서부터 실행
핵심 main() 자체가 진입점 조건문을 통해 특정 함수를 호출하도록 구성
  • C에서 main()은 program 실행을 위해 특별히 정해진 함수
  • Python에서 main()은 code 구조를 보기 좋게 만들기 위해 관례적으로 사용하는 함수임.
728x90

'Python' 카테고리의 다른 글

[Ex] 구구단  (0) 2026.06.12
[Ex] 기본 Python CLI프로그램 구조  (0) 2026.06.12
Lock and GIL  (0) 2026.06.01
Dynamic Scope 란?  (0) 2026.05.24
Python String Literal Concatenation  (0) 2026.05.23