아직 if 문을 살펴보지 않았지만(곧 살펴볼 것이다), 들여쓰기 깊이만 보아도 다음 예제의 제어 흐름이 앞서 살펴본 예제와는 다르다는 것을 알 수 있다.
def main():
age = int(input('나이를 입력하라: '))
name = input('이름을 입력하라: ')
if age < 30:
print('안녕하세요', name)
print('30세이하군요.')
print('정말 어리네요.')
다른 점이 보이는가? 이 버전 함수의 마지막 2줄 코드는 나이가 30보다 작은 것과는 상관없이 실행된다. 왜냐하면 파이썬은 들여쓰기로 제어 흐름을 결정하기 때문이다.
마지막 2줄이 반드시 나이가 30보다 작을 때 실행되어야 한다면 이 버전은 버그를 품고 있다고 할 수 있다. 버그를 수정하려면 첫 print 문과 동일한 들여쓰기가 되어야 할 것이다.
함수를 정의하고 나면 함수 이름과 소괄호(())를 사용하여 해당 함수를 호출(실행)할 수 있다(소괄호를 누락하면 성공적으로 함수를 실행할 수 없다!).7
main()
정리해 보자. 함수를 정의한다는 것은 스스로 동작하는 작은 프로그램을 만드는 것을 의미한다. 이런 함수를 정의하기 위해 def 문을 입력하고 끝날 때까지 코드 줄을 입력한 후 마지막에 빈 줄을 입력한다. 그러고 나면 함수 이름과 소괄호를 사용하여 해당 함수를 실행할 수 있다. 함수가 한 번 정의되고 나면 실행 횟수에 제약 없이 얼마든지 실행할 수 있다.
7 역주 소괄호가 누락되어도 에러가 발생하지 않는다. 그 대신 함수 이름이 출력된다(예 <function __main__.main()>).