Coding/TIL & 배운것들

함수 & 모듈

코딩짜는 머글 2024. 10. 6. 20:58

함수

특정 작업을 수행하는 코드 블록으로, 코드의 재사용성을 높이고 프로그램을 구조화하며, 복잡한 문제를 더 작은 단위로 나누어 해결할 수 있게 도와준다. 함수는 입력을 받아 처리한 후 결과를 반환할 수 있으며, 이를 통해 코드의 가독성과 유지보수성을 향상시킨다.

함수의 주요 기능

  1. 코드 재사용성: 동일한 작업을 여러 번 수행해야 할 때 함수를 정의하여 반복 코드를 줄일 수 있습니다.
  2. 모듈화: 프로그램을 논리적인 단위로 분리하여 관리하기 쉽게 만듭니다.
  3. 추상화: 복잡한 작업을 단순한 인터페이스로 감싸서 사용자가 세부 구현을 신경 쓰지 않고 사용할 수 있게 합니다.
  4. 유지보수 용이성: 함수 단위로 코드를 수정하거나 업데이트할 수 있어 전체 프로그램에 미치는 영향을 최소화합니다.
  5. 테스트 용이성: 개별 함수 단위로 테스트를 수행할 수 있어 버그를 쉽게 찾고 수정할 수 있습니다. 각 함수가 올바르게 동작하는지 확인함으로써, 전체 프로그램의 안정성을 높일 수 있다.

 

함수의 기본 문법

 
 def 함수이름(매개변수1, 매개변수2, ...):
        """함수에 대한 설명(도큐멘테이션 문자열)"""
        수행할 코드
        return 반환값
 

 

함수의 구성 요소

  1. 함수 이름: 함수를 호출할 때 사용하는 식별자입니다. 의미 있는 이름을 사용하는 것이 좋습니다.
  2. 매개변수(Parameter): 함수가 입력으로 받는 값들입니다. 매개변수를 통해 함수에 다양한 데이터를 전달할 수 있습니다.
  3. 함수 본문: 함수가 수행할 작업을 정의하는 코드 블록입니다.
  4. 반환값(Return Value): 함수가 작업을 수행한 후 결과를 호출한 곳에 반환하는 값입니다. return 키워드를 사용하여 반환합니다. 반환값이 없는 함수는 None을 반환합니다.
  5. 도큐멘테이션 문자열(Docstring): 함수의 목적과 사용법을 설명하는 문자열로, 함수 정의 바로 아래에 위치합니다. """로 감싸서 작성합니다.

함수사용시 주의사항

함수는 단일 작업을 수행하도록 설계하며, 매개변수 수를 적절히 유지하고, 함수 이름은 기능을 명확히 표현해야 한다. 또한, 부작용을 최소화해야 한다.

 

다양한 내장 함수들 

print() 함수: 출력하기

print() 함수는 데이터를 화면에 출력하는 가장 기본적인 함수입니다. 여러 값을 출력하거나, 문자열을 포맷팅하여 출력할 때 사용됩니다.

 

input() 함수: 사용자 입력받기

input() 함수는 사용자로부터 입력을 받을 때 사용됩니다. 입력된 값은 항상 문자열로 반환됩니다.

 

len() 함수: 길이 구하기

len() 함수는 문자열, 리스트, 튜플 등의 길이를 구하는 데 사용됩니다. 요소의 개수를 반환합니다.

 

type() 함수: 데이터 타입 확인하기

type() 함수는 변수나 값의 데이터 타입을 반환합니다. 이 함수는 변수가 어떤 데이터 타입인지 확인할 때 유용합니다.

 

int(), float(), str() 함수: 타입 변환하기

이들 함수는 값을 각각 정수, 실수, 문자열로 변환할 때 사용됩니다.

 

sum() 함수: 합계 구하기

sum() 함수는 숫자 리스트나 튜플의 모든 요소를 더한 값을 반환합니다. 주로 데이터 집합의 합계를 구할 때 사용됩니다.

 

min()과 max() 함수: 최소값과 최대값 찾기

min() 함수는 컬렉션에서 가장 작은 값을, max() 함수는 가장 큰 값을 반환합니다.

 

sorted() 함수: 정렬하기

sorted() 함수는 컬렉션의 요소를 정렬한 새로운 리스트를 반환합니다. 기본적으로 오름차순으로 정렬되며, 옵션을 사용해 내림차순으로 정렬할 수도 있습니다.

 

abs() 함수: 절대값 구하기

abs() 함수는 숫자의 절대값을 반환합니다. 음수의 경우 양수로 변환되며, 양수는 그대로 반환됩니다.

 

round() 함수: 반올림하기

round() 함수는 숫자를 지정된 자릿수까지 반올림합니다.

 

 

모듈(Module)이란?
모듈은 python 에서 관련된 함수, 클래스, 변수 등을 하나의 파일에 모아놓은 코드 묶음입니다.
모듈을 사용하면 코드를 재사용하고, 논리적으로 구분하여 관리할 수 있습니다.
간단히 말해, Python 파일( .py) 하나가 하나의 모듈이 됩니다.



모듈의 장점

코드 재사용성 : 한 번 작성된 코드를 여러 프로그램에서 재사용할 수 있습니다.

코드 관리 용이성 : 코드를 논리적인 단위로 나누어 관리할 수 있습니다.

이름 공간 관리 : 모듈은 각기 다른 이름 공간을 가지므로, 이름 충돌을 피할 수 있습니다.

 

모듈 예시

 
 # my_module.py라는 모듈
 def greet(name):
        return f"안녕하세요, {name}님!"
 

이처럼 greet 함수가 포함된 my_module.py 파일이 하나의 모듈입니다.

 

 

import 키워드를 사용하면 다른 파일에 있는 모듈을 불러와 사용할 수 있습니다. 이를 통해 다른. 파일에 정의된 함수, 클래스, 변수 등을 사용할 수 있게 됩니다.

 
import 모듈이름
 

 

모듈에 별칭 붙이기

모듈 이름이 길거나 더 짧게 사용하고 싶을 때, 별칭(alias)을 붙일 수 있습니다.

 
 import math as m # math 모듈을 m이라는 별칭으로 사용

 result = m.sqrt(25)
 print(result) # 5.0

 

from 키워드를 사용하면, 모듈 전체가 아닌 모듈 내의 특정 함수, 클래스, 변수를 선택적으로 불러올 수 있습니다. 이를 통해 필요하지 않은 모든 항목을 가져오지 않고, 필요한 부분만 사용할 수 있습니다. 항목이름 부분에 불러오고 싶은 함수를 여러개 넣어 여러 항목을 한번에 불러올 수도 있습니다. 

 
 from 모듈이름 import 항목이름

 

 

모듈 탐색 경로

Python에서 모듈을 불러올 때, Python은 특정 모듈 탐색 경로에서 해당 모듈을 찾습니다. 일반적으로 Python은 다음 순서로 모듈을 찾습니다

  1. 현재 작업 디렉터리: 현재 실행 중인 스크립트가 있는 폴더.
  2. 표준 라이브러리 경로: Python이 기본적으로 제공하는 라이브러리들이 위치한 폴더.
  3. 환경 변수에 지정된 경로: PYTHONPATH 환경 변수에 지정된 폴더.

모듈이 이 경로들 중 하나에 존재하면, import 또는 from 구문을 통해 해당 모듈을 불러올 수 있습니다.

 

사용자 정의 모듈 불러오기

자신만의 모듈을 만들어 다른 스크립트에서 사용할 수 있습니다. 동일한 디렉터리나 Python의 모듈 탐색 경로에 모듈 파일을 두면, 그 모듈을 import하거나 from로 불러올 수 있습니다.

 

모듈 파일 만들기 (my_module.py)

 
 def greet(name):
 return f"안녕하세요, {name}님!"

 

모듈 불러오기 (main.py)

 
 import my_module

 message = my_module.greet("Alice")
 print(message) # 안녕하세요, Alice님!

이처럼 파일을 만든후 import로 불러와 사용할 수 있습니다.

 

모듈 사용 시 주의사항

이름 충돌 주의

여러 모듈에서 동일한 이름의 함수나 변수가 있을 수 있습니다. 이를 피하기 위해 모듈 이름을 명시하거나 별칭을 사용하는 것이 좋습니다.

 필요 없는 항목 불러오기 지양

모듈에서 필요한 부분만 선택적으로 불러와 메모리 사용을 최적화하고, 코드 가독성을 유지하세요.

모듈 탐색 경로 확인

사용자 정의 모듈이 잘 불러와지지 않는다면, Python의 모듈 탐색 경로를 확인하여 올바른 위치에 모듈이 있는지 점검해야 합니다.

 

 

  • 모듈이란? 함수, 클래스, 변수 등을 모아놓은 Python 파일로, import와 from을 통해 다른 스크립트에서 사용할 수 있습니다.
  • import 키워드: 모듈 전체를 불러와 사용할 때 사용합니다.
  • from 키워드: 모듈 내의 특정 항목만 선택적으로 불러올 때 사용합니다.
  • 패키지: 여러 모듈을 논리적으로 묶어 관리하는 디렉터리 구조입니다.
  • 주의사항: 이름 충돌을 피하고, 필요한 부분만 불러오며, 모듈 탐색 경로를 확인해야 합니다.