PYTHON - 함수

.·2020년 5월 11일
0

Coding

목록 보기
12/33

1. 함수란 무엇인가?

함수는 특정 코드 블록을 재사용하기 위해 이름을 붙여서 네임스페이스에 저장한 오브젝트를 말한다.

DRY / Dont't Repeat yourself

함수는 코드의 간결함과 가독성, 디버깅을 위해 사용하는 것이다.
프로그래밍을 하다 보면 똑같은 내용을 반복해서 작성하고 있는 자신을 발견할 때가 종종 있다. 이때가 바로 함수가 필요한 때이다. 즉 반복되는 부분이 있을 경우 "반복적으로 사용되는 가치 있는 부분"을 한 뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 결괏값을 돌려준다"라는 식의 함수로 작성하는 것이 현명하다.

2. 함수의 기본적인 모양 및 매개변수, 인수의 차이

def gretting():
  print("hello!")

gretting()

""" 출력결과는 hello! """

함수의 매개변수(parameter) : 함수를 정의할 때 넣는 인자.
함수 호출시 사용되는 인수(arguments) : 함수 호출 시 괄호 안에 들어가는게 바로 인수.

매개변수(parameter)와 인수(arguments)는 혼용해서 사용되는 헷갈리는 용어이므로 잘 기억해 두자. 매개변수는 함수에 입력으로 전달된 값을 받는 변수를 의미하고 인수는 함수를 호출할 때 전달하는 입력값을 의미한다.

3. 함수 바깥의 변수와 매개변수의 관계

name = "lalalalalalala"

def greeting(name):
  print(f"hello! {name}")


greeting("teddy")
"""hello! teddy 가 출력됨"""

print(name)
"""lalalalalalala 가 출력됨"""

함수 바깥의 변수와 함수 작성시 사용된 매개변수가 같은 이름을 가지고 있다 하더라도, 정의된 변수와는 각각 다른 object 이다. 서로 영향을 미치지 않는다.

4 . 네임스페이스에 대해 알아보기

python에서는 변수의 유효 범위를 네임스페이스(namespace) 기반으로 결정한다

네임 스페이스는 Local, Enclosed, Global, Built-in 이 있으며, 이를 줄여 LEGB라 한다.

이는 변수를 확인할때 먼저 확인하는 순서이기도 하다.

Local : 지역적 네임스페이스로, 클래스나 함수의 내부 범위
Enclosed : 내부 함수에서 외부 함수의 변수를 사용할 수 있는 범위
Global : 전역적 네임스페이스로, 파일 단위의 모듈 범위
Built-in : 내장 네임스페이스로, 파이썬으로 작성된 모든 코드 범위

일단 이 정도만 하고 다음번에 학습해보자.

네임스페이스 관련 링크 : 네임스페이스에 대해 더 알고 싶다면 여기를 클릭!

5. 함수의 결과값을 리턴하기 위한 사용예시

5-1. 일반적인 사용 예

def add(a, b): 
    result = a + b 
    return result
    
>>> a = add(3, 4)
>>> print(a)
7

사용법 : 결괏값을 받을 변수 = 함수이름(입력인수1, 입력인수2, ...)

5-2. 입력값이 없는 함수

>>> def say(): 
...     return 'Hi' 
... 
>>> a = say()
>>> print(a)
Hi

사용법 : 결괏값을 받을 변수 = 함수이름()

5-3. 결과값이 없는 함수

>>> def add(a, b): 
...     print("%d, %d의 합은 %d입니다." % (a, b, a+b))
... 
>>> add(3, 4)
3, 4의 합은 7입니다.

사용법 : 함수이름(입력인수1, 입력인수2, ...)

print문은 함수의 구성 요소 중 하나인 <수행할 문장>에 해당하는 부분일 뿐이다. 결괏값은 당연히 없다. 결괏값은 오직 return 명령어로만 돌려받을 수 있다.

>>> a = add(3, 4)
>>> print(a)
None

a 값은 None이다. None이란 거짓을 나타내는 자료형이라고 언급한 적이 있다. add 함수처럼 결괏값이 없을 때 a = add(3, 4)처럼 쓰면 함수 add는 반환 값으로 a 변수에 None을 돌려준다. 이것을 가지고 결괏값이 있다고 생각하면 곤란하다.

5-4. 입력값도 결과값도 없는 함수

>>> def say(): 
...     print('Hi')
... 
>>> say()
Hi

사용법 : 함수이름()

profile
.

0개의 댓글