ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python3 (5)Function : 장점(왜 이름 중요), 사용법, arg&param, return, 기능은 하나만(계산 출력 따로)
    생활코딩 Python 2021. 12. 28. 21:34

    ---

    코드가 많아지면 복잡해집니다. 복잡해지면 작업을 하기 어려워집니다.

    함수를 이용하면 서로 연관된 코드를 모아서 그룹핑을 하고 이름을 붙일 수 있습니다.

    이름에만 주목하면 되기 때문에 코드가 다시 단순해집니다. 덕분에 보다 복잡한 작업에 도전할 수 있게 됩니다.

    뿐만 아니라, 재사용성을 높이고, 유지보수를 쉽게하고, 가독성을 높여주는 핵심적인 도구가 함수입니다.

    이 수업은 함수를 쓰는 이유와 함수를 만드는 방법을 소개합니다.

     

    https://youtu.be/zsfktX59MJc

    -------------------------

    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 뒤에 있는 값이 그 함수의 값이 됨.

     

    함수를 실행했을 때 그 함수가 값이 되면

    이렇게 그 값을 활용해서 다양한 일을 할 수가 있어. (저런 내장함수는 없어, 그냥 예시로 이름 붙여본 것)

     

    이제 우리는 서로 연관된 코드를 모아서 이름을 붙일 수 있게 됐다.

    이 이름들을 결합해서 더 거대한 성을 만들 수 있는 만반의 준비를 마친 것

     

    --기능을 하나만 갖게 하는거랑, 함수 이름으로 뭐하는 코드인지 추론할 수 있게 하는게 중요하다.

Designed by Tistory.