티스토리 뷰
목차
Before Init: Function vs. Method
결론부터 말하면 둘은 위와 같은 관계이다.
나도 아직 조금 헷갈리는데, 한 마디로 구분하자면 클래스 내에 선언된 함수를 메서드라고 부르는듯하다.
그 말은 뒤집어 말하면 파이썬의 함수는 자바와는 다르게 클래스 없이 독립적으로 선언할 수 있다는 말이 되며,
실제로 어제 작은 기능을 하나 구현해 보면서 느껴보기도 했다.
클래스에 소속되어 있는가의 유무에 따라 사용 코드에도 아래와 같은 차이가 발생하며,
print() # 함수
a.create() # 메서드
따지고 들자면 메서드도 함수이기 때문에 그냥 함수라 지칭해도 틀린 표현은 아니게 된다.
그럼 본론으로 들어가자.
Python Functions
Creating
파이썬의 함수 정의는 매우 쉽고 간단하다.
신경 써야 할 일이 거의 없게 느껴질 정도다.
예를 들자면 이런 방식으로 만든다.
def creating_function(a, b):
c = a + b
return c
def creating_function(a, b):
return a + b
# 두 함수는 동일하게 동작
이게 끝이다. 접근 지시자도 반환타입도 심지어 매개변수의 자료형도 명시하지 않는다.
함수 내에서 실행될 로직과 반환값(없어도 가능)만 적어주면 된다.
이것만으로도 방금 생성한 함수의 재사용성이 몇 배는 커지게 된다. 굉장한 객체지향적 사고이다.
추가로 파이썬에선 camelCase가 아닌 snake_case를 사용한다.
또한 폴더 명은 첫 글자를 대문자로, 파일의 이름은 소문자로 적는다.
Calling
들어가기 전에, 파이썬 함수 호출의 가장 중요한 점은
반드시 함수의 선언이 호출보다 앞서야 한다는 것이다.
이것만 잘 지키면 함수의 호출 역시 간단하다. 이름과 아규먼트를 적어주면 된다.
def creating_function(a, b):
return a + b
print(creating_function(1, 2)) # 3
print(creating_function([1, 2], [3, 4])) # [1, 2, 3, 4]
print(creating_function([1, 2], 3)) # Error
print(creating_function(1)) # Error
위에 잠깐 언급했듯이 참조변수의 타입을 적지 않고 파이썬이 동적으로 할당하는 덕분에,
아규먼트 타입만 잘 맞춰서 넣는다면 여러 타입에서 함수를 재사용할 수 있다.
Parameters, Arguments && Return Values
영어로 된 자료를 읽다 보니까 파이썬에선 파라미터와 아규먼트를 구분하는 것 같다.
중요한지 그렇지 않은지 나는 잘 모르니까 일단 써두기.
- Parameters - 함수를 정의할 때 사용하는, 소괄호 안에 있는 변수
- Argument - 함수를 호출할 때, 함수에게 전달하는 값
파라미터를 넣어 함수를 정의하는 것은 위에서 봤으니, 내 생각에 짚고 넘어가면 좋을 것 같은 기능
몇 가지만 더 적어보자.
파이썬에선 파라미터에 기본값을 할당해, 입력이 들어오지 않을 시 사용할 수 있다.
def creating_function(a, b=1):
return a + b
print(creating_function(1)) # 2
위와 같은 식이다.
추가로 기본값이 있는 파라미터는 언제나 그렇지 않은 파라미터의 뒤에 위치해야 한다.
def creating_function(a, b=1):
return a + b
def creating_function(a=1, b): # Error
return a + b
또한 파이썬에서는 아규먼트 입력 시 파라미터의 이름을 명시해 순서를 바꿔 입력할 수 있다.
def creating_function(a, b):
return a % b
print(creating_function(1, 2)) # 1
print(creating_function(b=1, a=2)) # 0
print(creating_function(1, b=2)) # 1
print(creating_function(1, a=2)) # Error
파라미터 이름을 모두 명시하지 않은 경우, 명시한 아규먼트가 뒤쪽에 위치해야 한다.
그리고 마지막 줄처럼 호출하면 이름이 없는 첫 번째 인자가 a로 들어가기 때문에 인수가 모자라다는 에러가 뜨게 된다.
특이하게도 파이썬의 함수는 인자의 개수를 정하지 않고도 생성이 가능한데,
아직 어디에 써야 좋을지 느낌은 오지 않지만 우선 적어놓는다.
def creating_function(*a): # 튜플로 저장
return a
def creating_function(**a): # 딕셔너리로 저장
return a
마지막으로 return값에 의해 반환되는 반환값의 경우,
두 번 이상 선언될 수는 있으나 첫 번째 return에서 반환하고 종료하게 된다.
def creating_function(a, b):
return a + b
return a - b
return a * b
print(creating_function(1, 2)) # 3
오늘도 이렇게 파이썬과 조금 더 가까워졌다.
지금 진행하고 있는 프로젝트에 파이썬을 끼워 넣으려 노력 중이긴 한데,
생각처럼 내 실력이 따라주지 않아 아쉽다.
어쨌거나 파이썬 함수에 대한 소개, 끝!
'Python > Python' 카테고리의 다른 글
[Python]enumerate() 내장함수 (0) | 2023.05.21 |
---|---|
[Python]컴프리헨션(Comprehension) (0) | 2023.04.30 |
[Python]파이썬으로 팩토리얼 구하기, 네 가지 방법 (0) | 2023.04.12 |
[Python]최대공약수, 최소공배수 (3) | 2023.04.09 |
[Python]set 자료형 각종 연산 (1) | 2023.04.08 |
[Python]기본 자료형 (0) | 2023.02.04 |
- Total
- Today
- Yesterday
- 스트림
- 자바
- BOJ
- Python
- 기술면접
- 세계여행
- 칼이사
- 야경
- 유럽
- 리스트
- 중남미
- Backjoon
- 지지
- spring
- Algorithm
- 세모
- 맛집
- 면접 준비
- RX100M5
- 동적계획법
- 유럽여행
- 여행
- 파이썬
- 남미
- a6000
- 세계일주
- 스프링
- 백준
- 알고리즘
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |