파이썬을 배우기 시작할 때 반드시 알아야 할 핵심 요소 중 하나는 예약어와 함수
프로그래밍 언어에서 특정 기능을 수행하도록 미리 정해진 단어
이러한 단어들은 언어의 문법 구조를 구성하는 핵심 요소
변수명이나 함수명 등으로 사용될 수 없다.
파이썬 3.9 기준으로 총 36개의 예약어가 존재
이 중 일부는 자주 사용된다
import keyword
keyword.kwlist

주의해야 할 점은
예약어는 대소문자를 구분
정확한 철자와 형식을 유지해야 한다
예)
for, if, while, import 등은 초보자도 자주 접하게 되는 예약어.
yield, lambda, async 등은 다소 생소할 수 있으나 특정 기능을 구현할 때 매우 중요한 역할
파이썬에서 예약어는 언어의 동작을 제어하는 핵심 명령어 역할.
변수나 함수 이름으로 사용할 경우 에러가 발생하게 되므로 이를 피하는 것이 중요.
함수나 클래스를 정의할 때
실수로 예약어를 사용하지 않도록 항상 목록을 확인.
함수는 특정 작업을 수행하는 코드 블록
코드의 재사용성과 가독성을 높이는 데 중요한 역할
파이썬에서는 괄호가 붙은 식별자를 통해 함수를 인식
함수는 내장 함수로 제공되기도 하고,
사용자가 직접 정의하여 활용할 수도 있다.
예)
print(), len()과 같은 함수는 이미 파이썬에 포함된 내장 함수
함수를 정의할 때는 def 키워드를 사용
호출 시에는 함수명과 괄호를 사용
입력값과 출력값을 통해 다양한 로직을 함수로 구성할 수 있어
복잡한 작업도 간결하게 구현 가능합니다.
함수를 정의한다 : 함수를 만드는 것
함수를 호출한다 : 정의한 함수를 사용하는 것
매개변수(parameter) : 함수 괄호 내부에 넣는 여러 가지 자료
인수(argument) : 함수를 호출할 때 넣는 값
리턴값(return) : 함수의 결과
파이썬 함수의 기본 형식
def 함수명(매개변수): 수행할 문장들
이 구조를 이해하면 함수의 정의와 호출을 자유롭게 구현할 수 있게 된다.
매개변수(parameter)는 함수 정의 시 전달받을 값
인수(argument)는 호출 시 전달되는 실제 값
※ 두 용어는 혼동하기 쉬우므로 구분해서 사용하는 것이 중요합니다.
예)
def add(a, b): return a + b는 두 값을 더하는 간단한 함수
호출 시 add(3, 5)와 같이 작성하면 8이라는 결과값을 반환
함수는 입력값과 출력값의 유무에 따라 네 가지 형태
1) 입력값과 출력값이 모두 있는 함수
2) 입력값만 있는 함수
3) 출력값만 있는 함수
4) 둘 다 없는 함수
예)
def mul(a, b): return a * b는 입력값과 출력값이 모두 있는 함수
def say_hi(): print("hi!")는 입력값은 없고 출력만 수행하는 함수
결과값이 없는 함수는 리턴이 없기 때문에 호출 결과는 None으로 나타납니다.
따라서 출력과 리턴의 차이점을 명확하게 인지해야 올바른 함수 설계를 할 수 있습니다.
많은 초보자들이 print()와 return을 혼동하는 경우가 많습니다.
print()는 단순히 값을 출력하는 것이며, return은 함수의 실행 결과를 외부로 전달하는 기능을 합니다.
예)
check = repeat('aiffel', 3)에서 함수 내에
return이 없으면 check 변수는 None 값을 갖게 된다.
이를 통해 함수가 결과값을 반환했는지 여부를 확인할 수 있다.
리턴이 있는 함수는 다양한 연산 결과를 변수에 저장,
다른 연산에 활용할 수 있어 프로그램의 효율성을 크게 향상.
예)
def repeat(text, count): print(text * count)
====> 단순 반복 출력만 수행
동일한 구조에서 return을 사용하면 결과를 재사용
함수는 가능한 한 범용적으로 설계, 출력 대신 리턴을 중심으로 구성하는 것이 좋은 습관
==> 유지보수나 코드 재활용 측면에서 큰 이점이 생김
프로그래밍은 기초 문법과 개념을 정확히 이해하는 것에서 시작됩니다.
예약어와 함수는 모든 파이썬 프로그램의 뼈대가 되므로 이들에 대한 이해 없이는 진도를 나가기 어렵습니다.
함수는 프로젝트 단위의 문제 해결에 필수적인 요소로 작용
===> 지금 단계에서 정확한 이해를 바탕으로 지속적인 연습이 필요