공부중

[Python] 함수 본문

프로그래밍/파이썬 Python

[Python] 함수

복습 2024. 8. 11. 10:04
728x90

1. 함수를 사용하는 이유

- 코드의 양을 줄일 수 있다. 

- 반복적인 사용이 가능하다. 

- 안전한 코드 작성이 가능하다

- 가독성이 증가한다. 

 

 

 

2. return

출력이 없는 함수에서 return은 함수 실행 도중 종료 하는 목적으로 활용 가능

바로 끝난다. 

 

 

 

3. 변수의 유효 범위 

 

전역 변수(global variable) 함수 밖에서 만들어진 변수. 
유효범위는 프로그램 전체임 
지역 변수(local variable) 함수 내부에서 만들어지고 
함수 내부에서만 사용됨

 

1. 바깥에서 a = 1 하는 경우

바깥에서 a = 1과 같이 변수를 정의하면 이 변수는 전역 변수가 됩니다. 이 변수는 함수 내부를 포함한 프로그램 전체에서 접근 가능합니다. 단, 함수 내부에서 이 변수를 수정하려면 추가적인 명시가 필요합니다(아래에서 설명).

 

a = 1  # 전역 변수

def print_a():
    print(a)  # 전역 변수 a를 출력

print_a()  # 1 출력

 

 

2. 함수 내에서 global a = 1 사용하는 경우

global 키워드는 함수 내에서 사용될 때 의미를 갖습니다. 함수 바깥에서 global a = 1과 같은 구문은 문법적으로 올바르지 않습니다. global 키워드는 함수 내에서 이미 바깥에 선언된 전역 변수를 직접 참조하고 수정할 수 있게 해줍니다.

 

a = 1  # 전역 변수

def modify_a():
    global a  # 전역 변수 a를 함수 내에서 수정하기 위해 선언
    a = 5  # 전역 변수 a의 값을 변경

print(a)  # 1 출력
modify_a()
print(a)  # 5 출력

 

 

 

 


4. 재귀 호출 (Recursion)

재귀호출을 빠져나갈 수 있도록 검사하고 종료하는 부분이 반드시 존재해야 함 (재귀호출 탈출 조건)

 

예제) 최대 공약수 구하기 

솔직히 재귀함수 쓰느니 반복문씀

 

유클리드 알고리즘을 활용

 

 

재귀적 접근 방법을 사용하는 코드는 다음과 같습니다:

def gcd_recursive(m, n):
    if m == n:
        return m  # 두 수가 같으면 그 수가 최대공약수
    elif m > n:
        return gcd_recursive(m - n, n)  # m이 n보다 클 때
    else:
        return gcd_recursive(m, n - m)  # n이 m보다 클 때

# 예제
print(gcd_recursive(48, 18))  # 최대공약수 출력

 

 

반복문을 사용하는 접근 방법을 사용하는 코드는 다음과 같습니다:

def gcd_iterative(m, n):
    while m != n:  # m과 n이 같아질 때까지 반복
        if m > n:
            m = m - n
        else:
            n = n - m
    return m  # 두 수가 같아지면, 그 수가 최대공약수

# 예제
print(gcd_iterative(48, 18))  # 최대공약수 출력

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90