본문으로 바로가기

PYTHON 함수를 알아보자

category 파이썬 2019. 7. 23. 03:53
728x90

* 함수

 

* 함수란?

- 일정한 작업을 수행하는 코드 블록으로 보통 반복적으로 계속 사용되는 코드들을 함수로 정의하여 사용

- 정의는 def키워드를 사용하여 정의

def 함수명(입력 파라미터):
	문장1
	문장2
	[return값]
def sum(a, b):
    s = a + b
    return s
 
total = sum(4, 7)
print(total)

>>> return 11

 

* 파라미터 전달 방식

- 파이썬 함수에서의 입력 파라미터는 Pass by Assignment에 의해 전달됨

- 즉 호출자는(Caller)는 입력 파라미터 객체에 대해 레퍼런스를 생성하여 레퍼런스 값을 복사하여 전달

- 입력 파라미터는 Mutable과 Immutable이 있다.

- Mutable객체는 파라미터로 전달시 호출자에게 함수에서 변경된 값이 반영됨

- Immutable객체는 파라미터로 전달시 함수 내에서 변경되지 않고 호출자에게 값이 반영되지 않음

# 함수내에서 i, mylist 값 변경
def f(i, mylist):
    i = i + 1
    mylist.append(0)
 
k = 10       # k는 int (immutable)
m = [1,2,3]  # m은 리스트 (mutable)
 
f(k, m)      # 함수 호출
print(k, m)  # 호출자 값 체크
# 출력: 10 [1, 2, 3, 0]

 

* Defalut Parameter

- 함수에 전달 되는 입력 파라미터 중 호출자가 전달하지 않을 경우 디폴트로 지정된 값을 사용하는 것

def calc(i, j, factor = 1): #factor는 별도로 전달되지 않은 파라미터로 함수에서 지정된 값
    return i * j * factor
 
result = calc(10, 20)
print(result)

 

* Named Parameter

- 함수 호출시 함수에 정의된 순서대로 호출함

- "파라미터명 = 파라미터 값" 형식으로 값을 넘겨줄 수 있는데 함수의 파라미터명을 이용해서 값을 넘겨주며 쉽게 파악하는 장점이 있음

def report(name, age, score):
    print(name, score)
 
report(age=10, name="Kim", score=80)
#함수의 파라미터 명을 이용해 값을 넘겨주는 모습

 

*가변 길이 파라미터

- 함수의 파라미터 갯수를 알 수 없거나 0부터 N개의 파라미터를 받고 싶을 때 사용

- 파라미터명 앞에 *을 붙여 가변길이 임을 표시

def total(*numbers):
    tot = 0
    for n in numbers:
        tot += n
    return tot
 
t = total(1,2)
print(t)
t = total(1,5,2,6)
print(t)

>>> return 3 14

 

*리턴 값

- 함수에서 호출자로 값을 리턴하기 위해 retrun문을 사용한다. 

- 단독 사용시 아무 값도 전달하지 않으며  "return 리턴 값"형식을 경우 호출자에게 값을 반환한다.

- return 값은 하나 이상의 값을 반환할 수 있으며 (,)으로 구분한다.

def calc(*numbers):
    count = 0
    tot = 0
    for n in numbers:
        count += 1
        tot += n
    return count, tot
 
count, sum = calc(1,5,2,6)  # (count, tot) 튜플을 리턴
print(count, sum)
728x90