Python - 사용자 정의 함수, None

이공·2023년 9월 14일
0

파이썬

목록 보기
8/10
post-thumbnail

오늘은 코딩을 하는 사람이라면 한번도 안쓰는 사람을 찾기 힘들다는 사용자 정의 함수에 대해서 포스팅하겠습니다.

1. 사용자 정의 함수

사용자 정의 함수란 사용자가 특정 작업을 수행하기 위해 직접 작성한 함수를 의미합니다. 파이썬에는 많은 내장 함수들이 있지만, 때로는 우리의 요구사항에 맞게 동작하는 함수를 직접 만들어야 할 때가 있습니다. 이때 사용자 정의 함수를 작성하게 됩니다. 기본적인 구조는 아래와 같습니다.

def 함수명(매개변수1, 매개변수2, ...):
    # 함수 내용
    return 결과값(=반환값)

함수도 메모리에 올라가기때문에 변수와 비슷하다고 생각하면 쉽습니다. 내 마음대로 이름, 입력값, 수행할 코드, 결과값 등을 설정하면 됩니다.

2. 매개변수와 반환 값이 없는 함수

함수에 넣어주는 값인 매개변수와 함수의 결과물로 나오는 반환 값(return 값)이 모두 없는 가장 단순하고 간단한 형태의 사용자 정의 함수 먼저 만들어 보겠습니다.

이름 print()를 사용해 출력값이 있다고 반환 값이 있다고 생각해서는 안됩니다. 반환 값이란 코드 내에서 return을 사용해 사용자 정의 함수가 다 돌아간뒤 변수에 저장할 수 있게 나오는 값입니다. 지금의 print()는 사용자 정의 함수 내에서 사용된 함수임으로 나오는 것 뿐이지 사용자 정의 함수가 지정한 return 값은 아닙니다. 아래의 반환 값이 있는 함수를 보면 이해가 되실겁니다.
또한, 사용자 정의함수는 다른 함수들과 똑같이 생각하면 됩니다. 그저 그 이름과 동작을 내가 설정할 뿐입니다. 물론 for문도 가능합니다.

3. 매개변수가 있고 반환 값이 없는 함수

함수에 넣어주는 input값, 즉, 매개변수가 있고 반환값이 없는 함수에 대해서 알아보겠습니다.
파이썬은 변수에 원래 의도한 type과 다른 type을 입력해도 에러가 나지 않기때문에 짤때 굉장히 주의해야 합니다. 특히 지금처럼 매개변수의 타입을 지정하지 않은 경우가 해당합니다. 함수에서 생성된 변수는 따로 저장하지 않는 이상 함수 밖에서 사용하지 못합니다. print()를 사용하는 출력으로는 변수에 출력값을 저장하지 못하고 None으로 출력됩니다.

4. 반환 값이 있는 함수

함수의 결과로 return 값이 있는 함수입니다. 함수 내부의 변수는 외부에서 사용할 수 없기 때문에 반환값(return)을 사용해서 활용할 수 있게 추출해줘야 합니다.


이러한 코드를 볼때 에러값에 집중하는게 코딩실력 향상에 도움이 됩니다. 함수에 들어가는 매개변수에 맞게 들어가야한다는 점과 함수 내부에서 생성된 변수는 return하지 않는 이상 출력할 수 없다는 것을 알면 사용자 정의 함수를 짜는 시야가 넓어질 수 있습니다.

5. None의 특징

None은 파이썬에서 특별한 값으로, 아무런 값이 없음을 표현하는 데 사용됩니다. 다른 언어에서의 null 또는 nil과 유사한 개념입니다. None은 파이썬의 내장 상수이며, 그 자체로 데이터 타입이 NoneType입니다. 모든 None은 동일하므로, 두 개의 None 값을 비교할 때 항상 True를 반환합니다.

None을 검사할 때는 == 대신 is 연산자를 사용하는 것이 좋습니다. is는 객체의 동일성을 검사하는 반면, ==는 객체의 동등성을 검사하기 때문입니다. 즉, is는 x와 None이 메모리 상에서 동일한 객체를 가리키는 경우에만 True를 반환합니다. ==는 값이 같은지 비교하는 것입니다. None은 값 비교가 아니라 같은 객체인지를 물어야 함으로 is가 적절합니다.None을 is로 검사하는 것은 무결성을 보장하고 코드의 의도를 명확하게 전달할 수 있기 때문에 x is None을 사용하는 것이 좋은 습관입니다.

5.1. 기본 초기값 설정

변수를 초기화할 때 아무런 값이 할당되지 않았음을 나타내기 위해 None을 사용할 수 있습니다.

5.2. 함수의 반환 값으로 사용

함수에서 특정 조건에서 아무런 값도 반환하지 않아야 할 때 None을 사용합니다. 사실, 함수에서 return 문이 생략되거나 없으면 기본적으로 None을 반환합니다.

5.3. 선택적 매개변수의 기본값

함수의 매개변수에 기본값으로 None을 할당하여 선택적으로 인자를 전달받을 수 있게 만들 수 있습니다.

6. 기본값이 설정된 매개변수

매개변수에 기본값이 설정된 경우, 매개변수가 입력되지 않을 때에 에러가 발생하는 것이 아니라 기본값이 들어간 상태로 함수가 실행됩니다.

7. 가변 매개변수

매개변수가 몇개가 오던 상관없는 함수는 매개변수가 가변매개변수로 설정된 함수입니다. 함수의 매개변수에 *을 넣어서 가변임을 알려주면 됩니다. 보통 arguments의 줄임말과 함께 *args로 사용합니다. 함수에는 튜플형태로 들어갑니다.

8. 키워드 매개변수 **

그렇다면 매개변수에 변수나 값이 아니라 딕셔너리를 넣고싶을때때는 어떨게 할까요? *args와 비슷하게 **을 쓰면됩니다. 보통 이것도 arguments의 줄임말과 함께 **args로 사용합니다.

9. 여러개의 반환 값

이번에는 리턴값이 여러개인 사용자 정의 함수에 대해 알아보겠습니다.

※ 파이썬 함수와 메모리

1. 메모리 로드

  • 함수 정의: 파이썬에서 함수는 객체로 취급됩니다. 따라서 함수를 정의하면 해당 함수는 메모리 상에 적재되며, 함수 이름은 이 함수 객체를 참조하게 됩니다.
  • 변수 할당: 함수를 다른 변수에 할당하면 그 변수는 원래의 함수 객체를 참조합니다. 이는 파이썬의 함수가 일급 객체(first-class object)로 취급되기 때문에 가능합니다.

2. 메모리 제거

-참조 카운트: 파이썬의 메모리 관리는 주로 참조 카운팅(reference counting)에 기반합니다. 객체를 참조하는 변수나 요소의 수를 세어서 이 카운트가 0이 되면 해당 객체는 메모리에서 제거될 수 있게 됩니다.

profile
인공지능 / 데이터분석

0개의 댓글