본문 바로가기
Python/Python 개념

파이썬 - 함수(심화)

by hyun-am 2020. 3. 29.

함수 - 심화

 

전역 변수와 지역 변수

 

먼저 변수에는 범위가 존재합니다. 이것을 변수의 범위(variable scope)라고 합니다.

변수가 참조 가능한 코드상의 범위를 명시 합니다. 함수내의 변수는 자신이 속한 코드 블록이 종료되면 소멸 됩니다. 이렇게 특정 코드 블록에서 선언된 변수를

지역변수(local variable)

이라고 합니다.

반대로 가장 위에서 정의 되어 프로그램 종료 전 까지 유지되는 변수를

전역변수(global variable)

이라고 합니다. 같은 이름의 지역변수와 전역 변수가 존재할 경우, 지역 변수의 우선순위가 더 높습니다.

 

전역변수 지역변수 예시 코드

 

num1 = 10
num2 = 30

def test(num1, num2):
    print(num1, num2)
    return num1 + num2

test(30, 40)
print(num1, num2)

## 출력 값

# 30 40
# 10 30

위에 num1, num2가 10, 30으로 정의되어 있어도 지역변수로(30, 40)을 입력한 값이 나오는 것을 확인할 수 있습니다.

 

가변 길이 인자(variable length argument)

 

전달되는 파라미터의 개수가 고정적이지 않은 경우에 사용됩니다.

예를 들면 print 함수와 format 함수가 있습니다.

 

가변인자 예시코드(*args) - arguments

 

다음은 *args입니다. 이것은 파라미터를 튜플의 형태로 전달합니다.

리스트나 튜플 같은 항목을 출력할 때 유용하게 사용할 수 있습니다. 예시 코드는 다음과 같습니다.

 

def list_sum(*args):
    sum = 0
    for item in args:
        sum += item
    return sum

sum_ = list_sum(1,2,3,4,5,6,7,8,9,10)
print(sum_)

## 출력 값
# 55 

 

가변인자 예시코드(**kwargs) - key word arguments

 

**가 붙은 경우에는 키워드 파라미터로 인식합니다.

즉 함수 호출 시, 파라미터의 이름과 값을 함께 전달할 수 있습니다.

예시 코드는 다음과 같습니다.

 

def key_value(**kwargs):
    for key, value in kwargs.items():
        print('key:', key, ', value:', value)

a = key_value(one=1, two=2, three=3, four=4)

## 출력 값
# key: one , value: 1
# key: two , value: 2
# key: three , value: 3
# key: four , value: 4

 

format 함수

 

가변 길이의 대표적인 예는 문자열 포맷 함수 입니다.

여러가지 값과 포맷을 이용한 문자열을 정의할 수 있는 함수입니다.

{ } placeholder를 문자열 내에 위치 시킨 후, 해당 위치에 format 함수로 전달된 값으로 대체하여 문자열을 생성합니다.

예시 코드는 다음과 같습니다. 아래의 코드는 구구단 코드인데 format을 사용하면 더욱 쉽게 표현할 수 있습니다.

 

for i in range(2,10):
    for j in range(1,10):
        print('{} x {} = {}'.format(i,j,i*j))
#         print(i,'x',j,'=',i*j)

## 출력 값
# 2 x 1 = 2
# 2 x 2 = 4
# 2 x 3 = 6
# 2 x 4 = 8
# 2 x 5 = 10
# 2 x 6 = 12
# 2 x 7 = 14
# 2 x 8 = 16
# 2 x 9 = 18
#     .
#     .
#     .
# 9 x 1 = 9
# 9 x 2 = 18
# 9 x 3 = 27
# 9 x 4 = 36
# 9 x 5 = 45
# 9 x 6 = 54
# 9 x 7 = 63
# 9 x 8 = 72
# 9 x 9 = 81

'Python > Python 개념' 카테고리의 다른 글

파이썬 - 모듈 Import  (1) 2020.03.30
파이썬 Lambda함수  (0) 2020.03.29
파이썬 함수 - 기초  (0) 2020.03.29
파이썬 반복분(While)  (1) 2020.03.29
파이썬 반복문(for)  (0) 2020.03.28

댓글