왜 쓰는지 알고 쓰는 것과 그냥 쓰는 것의 차이는 굉장히 크다고 생각합니다. 늘상 접하고 있는 함수에 대해서 정리해보겠습니다.
1. 함수의 강점
1) 반복과 재사용에 강하다
기계와 사람의 큰 차이점은 어떤걸까?
같은 일을 반복함에 있어서 속도차이가 엄청나게 나는 부분이 제일 큰 차이가 아닐까 싶습니다.
프로그래밍에는 반복을 해야하는 일들이 존재합니다. 즉, 코드를 재사용할 일이 많다는 뜻입니다.
그런것을 도와주는 것이
- 반복문
- 함수
정도 일 것 같습니다.
2) 유지보수에 좋다
함수의 강점은 반복 뿐만이 아닙니다.
modularity(모듈성)라 하는 시스템 구성 요소가 분리되고 재결합 될 수있는 정도를 나타내는 단어는 프로그래밍에 있어 중요합니다.
기능을 잘게 쪼개게 되면, 원하는 기능의 수정이 필요할 때에 전체적으로 얽혀있는 기능들의 모든 부분을 수정하지 않고 필요한 부분만 수정함으로써 유지보수에 쓰이는 시간을 절약 할 수 있게 됩니다. (debugging, testing, etc...)
결국 이 프로그래밍도 사람이 전부 하는 일이기에 사람의 시간(자원)을 절약해주는 방법이 좋은 방법입니다.
3) 가독성이 좋다
위의 2번과도 비슷한 얘기지만, 결국 프로그래밍도 사람이 하는 것이고 그 사람이 그 코드를 영원히 관리하지 않기 때문에, 다른 사람들이 잘 알아볼 수 있는 코드가 좋은 코드입니다.
함수는 그런면에서 가독성이 좋습니다. 함수이름부터 기능에 대해 유추를 해볼 수 있으며, 어디에서 어디까지의 코드가 해당 기현을 구현해 둔 것인지에 대해 명확히 파악 할 수 있기 때문입니다.
4) Namespace 분리 기능
네임스페이스(namespace, 이름공간)란 프로그래밍 언어에서 특정한 객체(Object)를 이름(Name)에 따라 구분할 수 있는 범위를 의미한다. 파이썬 내부의 모든것은 객체로 구성되며 이들 각각은 특정 이름과의 매핑 관계를 갖게 되는데 이 매핑을 포함하고 있는 공간을 네임스페이스라고 한다.
네임스페이스가 필요한 이유는 다음과 같다. 프로그래밍을 수행하다보면 모든 변수 이름과 함수 이름을 정하는 것이 중요한데 이들 모두를 겹치지 않게 정하는 것은 사실상 불가능하다.
따라서 프로그래밍언어에서는 네임스페이스라는 개념을 도입하여, 특정한 하나의 이름이 통용될 수 있는 범위를 제한한다. 즉, 소속된 네임스페이스가 다르다면 같은 이름이 다른 개체를 가리키도록 하는 것이 가능해진다. (참고)
파이썬의 네임스페이스는 3가지로 분류할 수 있다:
- 전역 네임스페이스: 모듈별로 존재하며, 모듈 전체에서 통용될 수 있는 이름들이 소속된다.
- 지역 네임스페이스: 함수 및 메서드 별로 존재하며, 함수 내의 지역 변수들의 이름들이 소속된다.
- 빌트인 네임스페이스: 기본 내장 함수 및 기본 예외들의 이름들이 소속된다. 파이썬으로 작성된 모든 코드 범위가 포함된다.
함수는 지역 네임스페이스에 속하여, 상황에 제일 알맞는 변수명을 사용할 수 있게 해준다.
2. return이란?
- 함수가 기능을 다하고 나서 되돌려주는 결과물
- 어떠한 파이썬 객체도 return될 수 있음
ex) 숫자(int, float, complex), 객체의 collection과 sequence(list,tuple,dictionary,set), 사용자 정의 객체(변수), 클래스,함수,모듈,패키지 등 - 아무것도 반환 안하면 None이 반환 됨
3. return을 사용하면 좋은 경우
함수가 기능을 다하고 함수내의 지역 네임스페이스에 있는 객체를 반환하고 싶을 때(사용해야될 때)
즉, 함수에 사용된 객체나 결과값을 활용해야 될 때 사용
4. return vs print()
- return과 print는 둘다 함수가 아님, 단지 구문일 뿐임
- return값은 terminal에서 파이썬 파일을 실행 시킬 경우 출력이 되지 않음
-> print(함수())와 같이 코드가 입력되어 있어야 return값이 출력 됨 - print는 인간의 편의를 위해 보여주기 위한 용도의 구문일 뿐임
- return은 말그대로 함수가 끝나고 난 후의 결과물이고, 어디에 사용할 지에 따라 결과값을 처리하면 됨
ex) 출력해서 보고싶다 print, 다른함수에 결과값을 활용하고싶다 함수2(함수1()),변수에 결과값을 저장한다, etc...
참조:
https://realpython.com/lessons/why-use-functions/#t=191.35
'language > Python' 카테고리의 다른 글
[Python] Logging 라이브러리 정리, Airflow에서 Logging사용하기 (0) | 2023.11.20 |
---|---|
[Python] PyPy3 vs Python3 (0) | 2023.01.06 |
[Python] Input() vs sys.stdin.readline() 입력 함수 차이 (feat. python version) (0) | 2022.12.15 |
[Python] pandas vs pyspark 사용 및 코드 비교 (0) | 2022.09.22 |
[Python] Numpy library 개념, 기본 사용법 (0) | 2022.07.12 |
댓글