AI/Python

파이썬 기초(함수와 모듈)

jumemory 2025. 5. 26. 17:42

파이썬 기초: 효율적인 코드 관리 (함수 & 모듈화)

단순한 나열식 코드는 규모가 커질수록 관리가 불가능해집니다. 이를 해결하기 위해 필요한 것이 바로 **'함수'**입니다. 함수는 특정 작업을 수행하는 코드 뭉치를 만들어 필요할 때마다 꺼내 쓰는 도구입니다.


1. 사용자 정의 함수 (def)

def는 사용자가 직접 함수를 정의할 때 사용합니다. 함수 이름과 입력받을 값(파라미터)의 수를 자유롭게 정할 수 있습니다.

  • 기본 구조:
    def 함수이름(파라미터1, 파라미터2):
        # 수행할 로직
        return 결과값
    
  • 매개변수 기본값(Default Parameter): 파라미터에 기본값을 지정하면, 함수 호출 시 값을 전달하지 않아도 기본값으로 동작합니다.
    def func(x, y = 10, type_='a'): 
        if type_ == 'a': return x + y
        if type_ == 'm': return x * y
    

2. 결과의 반환: return의 역할

return은 함수가 계산한 결과값을 함수 밖으로 넘겨주는 역할을 합니다.

  • 출력 vs 반환: print는 단순히 화면에 보여줄 뿐이지만, return은 계산된 값을 변수에 저장할 수 있게 해줍니다.
  • None 반환: 함수에 return이 없거나 아무 값도 반환하지 않으면 자동으로 **None**을 반환합니다.
  • 확인 도구:
    • is not None: 결과가 None인지 아닌지 확인 (True/False).
    • isinstance(값, 타입): 결과가 내가 원하는 타입(예: int, str)이 맞는지 확인 (True/False).

3. 변수의 범위: 전역(Global) vs 지역(Local)

변수가 어디서 선언되었느냐에 따라 사용 가능한 범위가 달라집니다.

  • 전역변수: 모든 코드에서 이용 가능한 변수.
  • 지역변수: 함수나 특정 블록 안에서만 사용되는 변수. 함수가 종료되면 사라집니다.
  • global 키워드: 지역(함수 안)에서 전역변수의 값을 수정하거나 새로 만들고 싶을 때 사용합니다.
    a = 10  # 전역변수
    def func():
        global kkk  # kkk를 전역변수로 선언
        a = 20      # 이건 이 함수 안의 지역변수 a
        kkk = 20
    func()
    print(kkk)  # 출력 가능 (20)
    

4. 유용한 내장 함수와 기법

함수를 더 강력하게 만들어주는 도구들입니다.

  • len(): 시퀀스 자료형의 길이를 출력합니다.
  • .split(): 특정 기호를 기준으로 문자열을 나눕니다.
    • .split(): 공백(스페이스, 탭 등)을 기준으로 나눔.
    • .split(" "): 오직 띄어쓰기 한 칸만을 기준으로 나눔.
  • in 활용: 여러 조건 중 하나라도 맞는지 확인할 때 or 연산자와 유사한 역할을 합니다.

5. 람다(Lambda)와 map: 익명 함수의 마법

이름이 없는 간단한 함수를 한 줄로 표현할 때 사용합니다. 복잡한 데이터 정제 시 매우 유용합니다.

  • 일반 함수 정의 후 map 사용:
    def tmp(x):
        return int(x.replace(",", ""))
    sum(map(tmp, ['1,000', '2,300', '3', '4']))
    
  • 람다 함수로 축약:
    sum(map(lambda x : int(x.replace(",","")), ['1,000', '2,300', '3', '4']))
    

     

     

이런식으로 타입힌트를 작성할수있지만 필수는 아니다(다른타입이 입력되도됨)

dir(str) #속성(__)과 행동(영어만)을 볼수있음

 

# 클래스 안에 매소드를 파라미터 처음에는 self를 작성함

클래스를 통해 만들어진 객체를 인스턴스라고 한다.

'AI > Python' 카테고리의 다른 글

통계 개념  (0) 2025.06.04
파이썬 기초(웹 크롤링)  (0) 2025.05.26
파이썬 기초(제어문)  (0) 2025.05.23
파이썬 기초(자료 구조의 핵심)  (0) 2025.05.21
Python 시작  (0) 2025.05.21