python - 함수, 전역변수, 지역변수, 람다함수, 재귀함수

slocat·2023년 11월 6일
0

start-data

목록 보기
5/75

함수를 사용하는 이유는, 기능을 재사용하기 위함이다.

매개변수가 몇 개인지 모를 때

def printNumbers(*numbers):
    print(f'numbers: {numbers}, type: {type(numbers)}')

printNumbers()
printNumbers(1)
printNumbers(1, 2)

>>>
numbers: (), type: <class 'tuple'>
numbers: (1,), type: <class 'tuple'>
numbers: (1, 2), type: <class 'tuple'>

return

함수는 return을 만나면 실행을 종료하고 결과값을 반환한다.

def oddOrEven(n):
    if n % 2 == 0:
        print('if문을 지났습니다.')
        return '짝수'
    else:
        print('else문을 지났습니다.')
        return '홀수'

num = 4
print(f'{num} => {oddOrEven(num)}')

>>>
if문을 지났습니다.
4 => 짝수

전역 변수, 지역 변수

전역 변수는 함수 밖에 선언된 변수로, 어디에서나 사용 가능하나 함수 안에서 수정할 수 없다.
지역 변수는 함수 안에 선언된 변수로, 함수 안에서만 사용할 수 있다.

num_out = 10

def printNum():
    num_out = 20  # 밖에서 선언된 num_out과 형태는 같지만 다른 것
    print(f'in printNum(): {num_out}')

printNum()
print(f'out printNum(): {num_out}')

>>>
in printNum(): 20
out printNum(): 10

전역 변수를 함수 안에서도 사용하고 싶다면? global

# 방문객 수 카운트
totalVisit = 0

def countTotalVisit():
    global totalVisit
    totalVisit += 1
    print(f'누적 방문객 수: {totalVisit}')

countTotalVisit()
countTotalVisit()

>>>
누적 방문객 수: 1
누적 방문객 수: 2

람다 함수, 함수 선언을 간단하게!

함수명 = lambda 매개변수: 실행문
add = lambda n1, n2: n1 + n2
print(add(10, 20))

>> 30

재귀 함수

return 부분에서 실행되는 내용을 계속 나열해보니 이해가 된다.

def factorial(n):

    if n == 1:
        return 1

    return n * factorial(n-1)

print(factorial(5))

>>>
120

실습 : 등비수열

def seqMul(a1, r, n):

    valueN = a1
    sumN = a1

    for i in range(1, n+1):

        if i == 1:
            print(f'1번째 항의 값: {a1}')
            print(f'1번째 항까지의 합: {a1}')
            continue

        valueN *= r
        sumN += valueN
        print(f'{i}번째 항의 값: {valueN}')
        print(f'{i}번째 항까지의 합: {sumN}')

seqMul(2, 3, 7)

>>>
1번째 항의 값: 2
1번째 항까지의 합: 2
2번째 항의 값: 6
2번째 항까지의 합: 8
(...)

0개의 댓글