Entry Point

Entry point는
program의 실행 흐름이
처음으로 진입하는 지점을 의미함.
entry는enter에서 온 말로, 기본 의미는 들어감, 진입, 들어가는 곳임.entry point는 말 그대로 들어가는 지점, 즉 진입점을 의미함.
enter : 들어가다, 진입하다
entry : 들어감, 진입, 들어가는 곳
entry point : 들어가기 시작하는 지점. 진입점.
전통적인 C 언어에서의 Entry Point
전통적인 C 언어에서는 보통 main() 함수가 program의 entry point로 사용됨.
int main(void) {
return 0;
}
C program이 실행되면, 다음과 같은 흐름을 거쳐서 main()함수가 호출됨:
- program 실행
- OS가 program을 memory에 load
- C runtime 초기화
- main() 함수 호출
- 사용자가 작성한 주요 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의 실행 흐름은 다음과 같음.
- python script.py 실행
- file 전체가 위에서부터 실행됨
__name__ == "__main__"조건 확인- 조건이
True이면main()호출 - 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"
이는 다음을 의미함.
myapp명령 실행mypackage.climodule을 찾음- 그 안의
main()함수 호출
즉, 사용자가 terminal에서 다음과 같이 실행하면,
myapp
내부적으로는 다음 함수가 호출됨.
# mypackage/cli.py
def main():
...
CLI package에서
entry point는
명령어와 실제 실행될 Python 함수를 연결하는 등록 정보임.
보다 자세한 건 다음을 참고:
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 구조를 보기 좋게 만들기 위해 관례적으로 사용하는 함수임.
'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 |