IT/프로그래밍

[파이썬] 파이썬 함수 [패스트 캠퍼스 챌린지 9일차]

뜻밖의 행복 2022. 2. 1. 23:20
반응형

안녕하세요? 뜻밖의 행운입니다. 

 

22년 올해는 작년에 비해 무엇 하나라도 더 알고 있는 제가 되고 싶어서 

도전한 파이썬 강의 완강!

오늘로 9일차 계속해서 잘 가보겠습니다. 

 

오늘은 역시나 또 많이 사용할 함수에 대해서 배웠습니다. 

프로그래밍을 하다면 보면 정말 중고등학교때 배웠던 개념들이 많이 나옵니다.

 

프로그래밍을 배울때 생각하면 좋은 개념중에 하나가 

이런 언어를 만든 사람은 게으른 사람이라는 것입니다. 

물론 진지하게 게으르다고 생각하면 안되고 ㅎ

 

너무나 게을러서 반복하는 작업 간단한 작업을 직접 하기 싫으니 

편하게 컴퓨터를 시키려고 개발을 한 것이죠 

 

그렇게 생각하면 이 함수도 조금은 이해하기 쉬워집니다. 

자주사용하는 기능을 함수로 만들어서 그 때 그 때 호출하여 사용하는 것이기 때문이죠

 

함수는 지금까지 저희가 배워왔던 조건문, 반복문, 변수 등으로 만든 것들을 조합해서 

반복 되는 패턴을 묶어서 한 번에 사용할 수 있게 해주는 것입니다. 

즉 반복해서 쓰기 귀찮으니 한번에 함수로 만들어서 편하게 쓸 수 있게 해주는 것이죠

사실 함수도 이렇게 설명을 듣는 것 보다 예제 한번 보면 바로 빡 이해가 됩니다. 

 

그 전에 왜 함수를 사용하는지 몇가지 이유를 보면 

 

1. 재사용성이 좋아집니다.

2. 유지보수가 편리해집니다.

3. 가독성이 좋아집니다.

 

쓰기 편하려고 만드는 것이 함수라 당연히 재사용하기가 매우 좋아집니다. 

개발은 한번 해놓고 끝이 아니라 몇번의 개량 그리고 bug 수정들이 필요 하기 때문에

유지보수가 편리하게 좋습니다. 

뜻밖의 행운은 컴퓨터 조립이나 기계 부품 같은거 뜯어서 내부 구조를 보거나 

간단한 고장은 직접 고치는 것을 좋아 하는데 

드라이버 한개로 분해가 되는 기계는 유지 보수가 편하죠 

다만 접착제로 붙여 버렸거나 잘 사용하지 않는 규격의 나사로 조여 버린 것들은 

유지보수가 힘듭니다. 

 

개발도 똑같습니다. 결합도가 낮아야 유지보수가 편리해지는데 이렇게 함수로 잘 구현 해두면

수정하기가 편합니다. 

 

가독성이 좋아진다. 

 

말그대로 입니다. 

 

누구의 글을 읽기 편하고 누구의 긁은 같은 내용이라도 이해하기 힘듭니다. 

함수는 굉장히 길어질 코드를 급격하게 줄여버리기 때문에 

보기에도 굉장히 좋아집니다. 

 

print("굿 데이 휴먼. 오늘 날씨가 좋다.")
print("휴먼 너의 남은 전역일을 알려주겠다. 100000일 남았다.")

print("굿 데이 인간. 오늘 날씨가 좋다.")
print("휴먼 너의 남은 전역일을 알려주겠다. 90948일 남았다.")

print("굿 데이 사람. 오늘 날씨가 좋다.")
print("휴먼 너의 남은 전역일을 알려주겠다. 86757일 남았다.")

자 위와 같은 코드가 있다고 봅시다. 

여기서 다른 점은 굿 데이 뒤로 나오는 휴먼, 인간, 사람 

그리고 일 남았다. 앞에 숫자 

나머지는 모두 패턴의 반복입니다. 

개발자는 이러한 반복을 싫어해야 합니다. 

그래서 최대한 단순화 하고 반복 되는 내용은 한번에 쓸 수 있게 

해야 하는데 이 때 사용 되는 것이 함수입니다.

 

 

 
 
 

 

함수를 사용하는 것은 매우 쉽습니다. 

그리고 사용하는 것도 굉장히 멋있습니다.

 

자 위 코드를 돌리면 아래와 같이 출력이 되는데 

위에 내용을 함수로 정의 해버리면

 

def func(name, date):
    print("굿 데이 ", name, "오늘 날씨가 좋다.")
    print("휴먼 너의 남은 전역일을 알려주겠다. ", date,"일 남았다.")

func("휴먼", 100000)
func("인간", 90948)
func("사람", 86757)

보통 함수는 위처럼 사용합니다. 

 

보시면

 

def 함수이름():             

      명령내용

 

이런 형태인데요 def는 define의 줄임말로 

말그대로 정의 한다는 뜻입니다. 

얼마나 멋있나요!!!

내가 정의하겠다. 이 함수의 이름과 기능을!!!!!! 멋있게 선언

 

아무튼 위 코드를 다시 보면

def func(name, date):
    print("굿 데이 ", name, "오늘 날씨가 좋다.")
    print("휴먼 너의 남은 전역일을 알려주겠다. ", date,"일 남았다.")

func("휴먼", 100000)
func("인간", 90948)
func("사람", 86757)

 

변하는 부분만 변수로 취하고 나머지는 함수로 만들어서 

기존 대비 많은 생략을 할 수 있게 되었습니다.

 

보시면 결과도 비슷하죠?

이제 문구를 고치고 싶으면 기존에 모든 print 문을 다 수정할 필요 없이

함수로 정의 한 부분만 수정하면 되니까 유지 보수성이 올라가고 


반복 되는 것은 func으로 묶어 버려서 보기에도 좋습니다.

 

이래서 함수를 사용하는 것입니다.

그리고 이 좋은 함수를 완전히 내것으로 만들려면 역시 간단한거라도 직접 만들어 봐야겠죠?

 

함수는 정의하고 그리고 호출하여 사용함으로써 완성이 됩니다.

 

def 함수이름():           

      명령내용

으로 정의 하고 

 

사용(호출)은 

함수이름() 으로 사용하는 것입니다. 

 

이때 함수는 여러가지 형태가 있을 수 있는데 

우선 매개변수가 있는 함수와 반환값이 있는 함수 이렇게 나눌 수 있고 아마도 가장 많이 사용할 것들입니다.

매개 변수라는 것은 우선 위의 예제로 나왔던 것입니다.

 

정의

def 함수이름(매개변수1, 매개변수2):

     명령블록

 

사용

함수이름(인자1, 인자2)

함수를 정의할때 인자를 몇개 받을지 저기 매개 변수로 지정 가능합니다. 

 

그리고 반환값 일명 리턴값이 있는 함수

보통 조건식에서 함수가 어떤값을 반환하느냐에 따라 다르게 작동하기 때문에

역시 자주 이용할 함수 입니다.

 

정의

def 함수이름():

      명력블록

       return 반환값

 

보통 위 함수는 계산기를 예제로 많이 사용하는데 실제로 

 

def 덧셈(a, b): 

  결과 = a + b

   return 결과

 

라고 하고 

 

덧셈(1, 2) 로 함수를 사용하면 

1 + 2 = 3 즉 3이 반환 될 것입니다.

 

다음에는 다양한 예제를 풀면서 확실하게 제것으로 만들도록 하겠습니다.

 

반응형