| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 생성형 인공지능
- SQL
- TTS
- Transformer
- ASR
- 정보처리기사
- Python
- 자연어처리
- 캐글
- 데이터엔지니어
- CNN
- 에이전트
- 머신러닝
- python 기초
- 기초
- UMAP
- 트랜스포머
- dementional reduction
- 랭그래프
- 알고리즘
- LangGraph
- 힙정렬
- 딥러닝
- 객체지향
- 데이터 시각화
- RDBMS
- 소프트웨어 개발
- CLIP
- python기초
- RNN
Archives
- Today
- Total
수달이네 기술 블로그
5. 함수 본문
🔍함수의 기본형
C
리턴타입 함수명([매개변수타입 매개변수명...]){
정의부
[return 리턴값]
}
파이썬
def 함수명([매개변수...]):
정의부
...
[return 리턴값]
특징
- 타 언어에서는 리턴타입을 직접 정해주지만, 파이썬에선 리턴타입을 따로 기재하지 않는다.
- 마찬가지로 매개변수의 데이터타입도 정해주지 않는다.
※그러나 적절하지 않은 매개변수와 리턴타입을 제공하는 것은 잘못된 코드이다.
def power(x:int)->int:
return x*x
'''
1, 2번을 보완하기 위해 파이썬에서도 위와 같이 주석처럼 강제할 수 있는 코드가 존재한다.
':(콜론)'은 앞의 매개변수를 뒤의 값으로 정하며,
'->'는 해당 함수의 리턴타입이 해당 리턴타입임을 명시한다.
'''
- 파이썬은 리턴값이 존재하지 않으면 None이라는 특별한 객체를 반환한다.
※그러나 적절하지 않은 매개변수와 리턴타입을 제공하는 것은 잘못된 코드이다. - 타 언어에는 같은 함수명으로 다른 매개변수를 사용하는 '오버로딩'이라는 개념이 존재하지만, 파이썬에선 제공하지 않는다.
def say_hello(name):
print("안녕, ", name)
def say_hello(name,msg):
print("안녕, ", name, "야", msg)
만약 이 상태에서 위의 함수인 say_hello(name)을 사용하려 하면 모듈에러가 날 것이다.
그 이유는 파이썬에선 같은 이름의 함수라면 마지막에 정의되어진 함수만 인식하기 때문이다.
즉,
myName = "suchoeli"
msg = "Let's go"
def print_msg(name):
print("Hello " + name)
print_msg(myName)
def print_msg(name, msg):
print("Hello " + name , msg)
print_msg(myName, msg)
위와 같이 아래에서 한번 더 정의하는건 오류가 나지 않는다.
※그렇지만 이런식으로 함수를 정의하는 것은 좋지 않고 유니크한 함수명을 사용하는 것이 좋다.
🔍import
다른 파일에서 내용을 불러오는 기능 또한 존재한다.
#hello.py
def print_msg(name):
print("Hello " + name)
def print_name_msg(name, msg = "별일없나?"):
print("Hello " + name + msg)
위와 같은 py파일이 존재한다면.
#main
from hello import *
myName = "MariBlossom"
msg = "Let's go"
print_msg(myName)
print_name_msg(myName, msg)
#Hello MariBlossom
#Hello MariBlossomLet's go
이렇게 불러오는 방식과
#main
import hello
myName = "MariBlossom"
msg = "Let's go"
hello.print_msg(myName)
hello.print_name_msg(myName, msg)
#Hello MariBlossom
#Hello MariBlossomLet's go
이렇게 불러오는 방식이 존재한다.
첫번째 방식의 경우 해당 파일 자체와 그 파일 내의 함수들을 모두 불러오는 방식이므로 함수를 직접 사용해도 된다.
두번째 방식의 경우 해당 파일만 불러오는 것이므로 파일명.함수명으로 불러와서 사용해야한다.
🔍Default값, 키워드 인수
파이썬에선 값이 들어오지 않았을 경우의 default값을 직접 설정할 수 있는데,
def is_prime(num:int = 0)->bool:
if num < 2:
return False
if num == 2:
return True
for i in range(2, num):
if num % i == 0:
return False
return True
위와 같이 변수 뒤에 = 을 사용하여 default값을 설정할 수 있다.
또한 보통은 함수 호출시 위치에 의해 구별되어 순서가 중요한데,
def power(x,y):
result = x
for i in range(y - 1):
result *= x
return result
print(power(y=2,x = 4))
#16
위와 같이 직접 매개변수명을 통해 설정해준다면, 순서가 상관없게 된다.
그러나, 가독성 면에서나 편의성면에서도 위처럼 쓰는 방식은 추천되지 않는다.
★참고
함수가 불러지는 방식은 2가지가 있다.
call by value: 함수를 부를때 변수를 값을 넘겨서 부르는 방식(main에 return만 영향을 줌)
call by reference: 주소값을 부르기 때문에 해당 매개변수까지 영향을 받음
'언어 > Python' 카테고리의 다른 글
| 7. 리스트(list 자료형의 기능, 함수 등..) (5) | 2025.08.25 |
|---|---|
| 6. 함수2(Call-by-value,reference, 람다식, 튜플, 모듈 등...) (6) | 2025.08.25 |
| 4. 자주 쓰이던 함수 (0) | 2025.08.22 |
| 3. 반복문 (0) | 2025.08.21 |
| 2. 조건문 (2) | 2025.08.21 |