-
Python3 (5)Function : 장점(왜 이름 중요), 사용법, arg¶m, return, 기능은 하나만(계산 출력 따로)생활코딩 Python 2021. 12. 28. 21:34
옮
---
코드가 많아지면 복잡해집니다. 복잡해지면 작업을 하기 어려워집니다.
함수를 이용하면 서로 연관된 코드를 모아서 그룹핑을 하고 이름을 붙일 수 있습니다.
이름에만 주목하면 되기 때문에 코드가 다시 단순해집니다. 덕분에 보다 복잡한 작업에 도전할 수 있게 됩니다.
뿐만 아니라, 재사용성을 높이고, 유지보수를 쉽게하고, 가독성을 높여주는 핵심적인 도구가 함수입니다.
이 수업은 함수를 쓰는 이유와 함수를 만드는 방법을 소개합니다.
-------------------------
1.함수는 정리 정돈의 도구
정리하고 싶죠?
정리는 어떻게 할까요?
1.서로 연관된 물건들을 grouping해서
2.서랍과 같은 곳에 넣은 후에,
3.거기에 이름을 붙임
=> 이제 서랍에 붙은 이름만 신경쓰면 됨.
인간의 위대한 능력 중 하나는 복잡한 것을 단순화 시키는 겁니다.
단순해진 만큼 더 복잡한 작업을 할 수 있으니까요 --난 이게 무슨 말인지 알지 신경론
정리정돈이라는 것은 단순화의 과정이라고 볼 수 있다.
코드를 작성하다보면 시나브로(=모르는 사이에 조금씩) 코드가 엄청나게 많아지고 복잡해짐
이렇게 복잡해서는 아무일도 할 수가 없다.
자연스럽게 우리는 이 복잡한 코드를 정리정돈 하고 싶음.
> 이 꿈을 해결해주는 환상적인 도구가 함수!
함수를 이용하면 서로 연관된 코드를 모아서 이름을 붙일 수 있다
-------------------------
2.내장 함수를 통해 알아보는 함수
이 print라는 애는 입력으로 들어온 Hello world를 화면에 출력하는 함수다.
len이라는 애는 입력값으로 들어온 데이터의 길이를 알려주는 함수, 함수가 알려준 값을 print해보면 알 수 있다.
이 함수들이 어떻게 내부적으로 구현됐는지 모르고, 몰라도되고 관심도 없다 그냥
입력값으로 문자열을 전달하면 그 길이를 출력한다는 사실만 알면 이 함수를 사용할 수 있다.
이런 함수들을 부품으로 결합해서 크고 복잡한 완제품을 만들어가는 것이 SW를 만드는 여정이라 할 수 있다.
len은 기본적으로 파이썬에 내장돼 있는 내장함수다.
파이썬엔 엄청나게 많은 내장돼있는 함수가 들어있고 이 SW엔지니어들은 내장된 함수를 조립해서 완제품을 만든다.
-------------------------
3.사용자 정의 함수 만들기
그 함수를 내가 만들기
만드는 방법을 살피기 전에, 함수를 왜 쓰는지를 좀 알자
뭔가 패턴이, 중복이 발견됨. 3줄 저거
저게 사실 3줄이 아니고 1억줄이라면?
반복되는게 3번이 아니고 1억번이면?
1.1억줄 짜리 코드가 덩어리로 있으면 그 코드가 어떤 취지의 코드인지 금방 파악이 쉽지 않다
2.반복되는 많은 코드를 다 작성해야함
3.똑같은 취지의 코드임에도 불구하고 대문자를 소문자로 바꾸면 나머지애들도 다 소문자로 바꿔줘야 함.(함수로 바꾸면 코드들이 똑같다고 확신할 수 있는 그거랑 매칭되는 것인듯)
▽4.긴 코드 대신 함수 한줄로 똑같다는 걸 확신 할 수도 있게 해주고...
여기서 우리를 구원해줄 도구가 함수.
abc를 출력하는 함수를 만들어볼게요
- 함수를 만들 땐 def로 시작함.
- 그리고 그 함수의 취지를 잘 설명하는 제목을 정하기
- def abc(): --괄호열고 괄호닫고 콜론
이러고 엔터치면 자동으로 들여쓰기가 됨. 이 들여쓰기는 굉장히 중요
- 거기에 함수의 내용을 적음
똑같이 들여쓰기 된 이만큼이 abc라는 함수의 본문이 됨!
함수 실행은 abc()
- 함수의 본문이 1억줄이더라도 함수의 이름(check같은)을 보면 (check하는앤가?)추론할 수 있다
- abc()가 여러곳에 써져있어도 그 코드들이 똑같은 내용이라는 것을 확신할 수가 있다.
- 대문자로 바꿔야 한다면 정의부만 바꿔주면
사용하고 있는 모든 함수의 호출에서 동시에 변화가 있고 유지보수에 폭발적 향상이 있음.
-------------------------
4.함수 응용
부가가치세를 계산하는 코드지만 아주아주 복잡한 코드라고 상상하기
딱 봐서는 그 취지를 파악하기가 대단히 어려운
또 그 앞뒤로 1억 줄 씩의 코드가 있는 복잡한 app이다.
자 그럼 이게 뭘 하고 싶다??
1.코드에 이름붙이기 def get_vat():
2.함수호출 get_vat()
이름이 생겨서 함수의 이름을 통해 복잡한 코드를 추론할 수 있다!!
관련된 코드를 모아서 이름을 붙인다 = 함수의 첫번째 기능
-------------------------
5.인자와 파라미터 통해
get_vat(10000)을 하면 1000을 출력하고
get_vat(20000)은 2000을 출력하는 애로 업그레이드 하고 싶어
입력값에 따라 다르게 동작하는 함수를 만들고 싶어
( )안에 price라고 적으면 함수 쓸 때 ( ) 안에 있는 값이 price라고 하는 변수의 값이 됨
price(10000)라고 하면 함수 내에서 price의 값은 10000임.
입력값으로 전달한 값을 인자, argument라고 함.
인자를 받아서 함수 안에서 사용하는 변수를 매개변수, parameter
부가가치세도 변경하게 하고 싶으면
입력하면 그 값을 쓰고, 입력하지 않으면 기본값으로 0.1을 쓰는 것은?
이렇게 하면 됨
-------------------------
6.값을 리턴
함수가 값이 된다.
두개의 기능을 갖고 있다.
- 부가가치세를 계산
- 그것을 출력
좋은 제품이면 기능을 하나만 갖고 있는게 좋아
그렇게 나눠놓으면 좋은게 출력만 하는게 아니라
함수를 실행했을 때 그 함수가 값이 된다면 그 함수를 출력할 수도 있고 이메일로 보낼 수도 있고 파일에 저장할 수도 있다.
return이라는 것을 쓰면 함수를 실행했을 때 값이 된다.
return을 만나면 거기서 함수의 실행이 끝남.
return 뒤에 있는 값이 그 함수의 값이 됨.
함수를 실행했을 때 그 함수가 값이 되면
이렇게 그 값을 활용해서 다양한 일을 할 수가 있어. (저런 내장함수는 없어, 그냥 예시로 이름 붙여본 것)
이제 우리는 서로 연관된 코드를 모아서 이름을 붙일 수 있게 됐다.
이 이름들을 결합해서 더 거대한 성을 만들 수 있는 만반의 준비를 마친 것
--기능을 하나만 갖게 하는거랑, 함수 이름으로 뭐하는 코드인지 추론할 수 있게 하는게 중요하다.
'생활코딩 Python' 카테고리의 다른 글
Python3 (6)Module, Package, import문법 (0) 2022.05.25 Python3 (4)flow control : boolean, if, for, list, dict, and, or (0) 2021.11.22 Python3 (3)오타론, vscode디버깅, 입출력, import모듈, install패키지, pypi&pip (0) 2021.11.22 Python3 (2)자료형(숫자,문자열,리스트), 모듈, 공식 문서, 검색, 변수 (0) 2021.08.16 Python3 (1)프로그래밍언어1.~7., 설치, 실행, shell&code (0) 2021.08.12