티스토리 뷰

 

 

 

Day2. 함수 

 

1. 함수란? 

 

함수는 적절한 입력을 받아 원하는 기능을 수행하고 필요하면 그 결과를 반환해 주는 것이다. 리턴값(반환값)이 꼭 필수는 아니지만 적어줌으로써 좀 더 코드의 안전성과 가독성을 챙길수 있다.

 

- 아래 그림을 보면 함수들 옆에 주석처럼 달려 있는것들이 있다.

 

1.  → int : 파이썬에서 함수정의시  () 의 역할은 함수에 대한 리턴값의 주석이다. 주석이기 때문에 굳이 안적어도 된다.(적어주면 코드의 안전성이 올라간다.)

 

   → int 리턴값으로 int형 정수를 받는다는 주석 

   → any리턴값으로 뭐든지 받을 수있다는 주석

 

2. 함수(x : int, y: int) :  파라미터값을 보면 옆에 콜론이 붙어있다. 콜론 옆에 보이는 int가 주석을 적어놓은 것이다.  x : int 같은 경우  x는 정수값을 받겠다고 주석처리 해주는 것이다.

 

3.  Java는 function 함수명( ) 을 써서 함수를 만든다. Python에서는 함수를 만들때 def  함수명( ) 으로 함수를 만든다.

 

 

 

 

함수명은 add, minus처럼 따로 정해져 있는것은 아니다. 함수안에 파라미터값을 이용해서 적절한 수식을 만들고 (x + y 처럼..) 그 결과값을 반환하는 형태이다.

 

 

리턴값이 없는 함수

 

 

함수 자체에 print( ) 함수를 넣어줌으로써 따로 return값을 주지 않고, 함수를 실행시키는 것만으로 출력할 수 도있다.

 

 

 

(*args) : 가변 파라미터 

 

 

가변 파라미터 *args파라미터가 하나가 아니라 여러개를 받을 때 쓰는 가변 파라미터이다. 파라미터값을 a,b,c,d,x,y 이렇게 여러개 줄 수도 있지만, 함수안에 반복문을 쓰거나, 파라미터값이 몇개인지 모르거나 혹은 너무 많을때 *args(가변 파라미터)를 쓴다.

 

- 근데 args가 정해진 이름은 아니다. 앞에 *을 붙이고 *a , *arguments 이렇게 적어도 똑같은 기능을한다. args가  arguments의 약자라서 이렇게 보통 많이 적는다.

 

 

 

 

add_many( ) 함수안에 파라미터 값을 여러개 넣거나, 정수 실수 구분 없이 넣어도 함수가 잘 실행되는 것을 확인할 수 있다. (result에 파라미터값을 하나씩 더하는 반복문이다.)

 

 

(**kwargs) : 키워드 매개변수 

 

 

 

 

출력된 결과를 보자. print_kwargs( ) 함수를 호출하게 되면 키워드 매개변수(kwargs)을 리턴한다. 파라미터값으로 a = 1 을 넣고 함수를 호출하면 { 'a' : 1 } 이렇게 딕셔너리 형태로 저장한다. 

 

하나가 아니라 여러개로도 입력이 가능하다. ( key1 = ' value1 'key2 = ' value2 ')

 

key value값을 찾고 싶으면 함수 호출의 결과인 딕셔너리 result에서 result [ 'key1' ] 을 입력하면 해당하는 key의 value 값을 찾아준다.

 

 

 

함수의 기본값(초기값)

 

 

 

함수를 만들때 파라미터값을 지정해서 만들 수있다. man = True 라고 기본값을 준채로 만들었기 때문에 man의 값으로 True 말고 다른 값이 오게 되면 조건에 맞지 않아 "나는 여자입니다." 를 출력한다.

 

 

 

 

반대로 man = True라고 파라미터값을 주게 되면 당연히 조건에 부합하기 때문에 "나는 남자입니다"를 출력한다. 여기서 한가지 봐야할 것은 파라미터값은 원래 주어진 순서대로 넣어야 각각의 자리에 맞게 값이 들어가지는데, 파이썬에서는 파라미터 명을 지정하고 값을 주면 순서에 상관없이 값을 넣을 수 있다.

 

 

 

 전역변수 / 지역변수 

 

 

변수에는 유효범위(variable scope)가 있다. 변수는 유효범위를 기준으로 문서 전체에서 사용가능한 전역변수와 함수내에서만 사용가능한 지역변수로 나누어진다. 

 

 

1. 전역변수( Global Variable ) :  전역변수는 말 그대로 전체 영역에서 사용가능한 변수를 말한다. 함수 밖에서 만들어진 함수를 전역변수라고도 한다. 한번 만들어 놓으면 문서전체 혹은 다른 함수에서 사용이 가능하다.  전역변수가 편하기는 하지만 다른 함수에서 여러번 가져다 쓰다가 값을 바꿔 당황하는 일이 생길수도 있으니 적재적소에 맞게 사용해야한다.

 

2. 지역변수(Local Variable ) : 지역변수는 함수 내에서만 사용가능한 함수다. 함수가 호출되면 만들어져서, 함수의 실행이 끝나면 같이 사라진다.하지만 함수에서 지역변수 말고 전역변수를 가져다가 쓸 수 있는 방법도 있다. 바로 global 키워드를 사용하면 전역변수를 가져와서 함수에서 사용할 수있다. 당연히 값이 바뀌는것도 전역변수의 값이 바뀐다.

 

 

 

하나의 그림으로 설명하려 하니깐 조금 복잡해 보인다. 전역변수와 지역변수를 적절히 활용하면 내가 원하는 방식으로 변수들을 사용할 수 있다. 공통된 값으로 사용해야 하는 전역변수, 함수 안에서만 사용되어야 하는 지역변수 언제 어떻게 쓰는지에 따라 값이 확 바뀌니 확실하게 구분해서 상황에 맞게 쓰도록 하자.

 

 

함수 글에서 이제 남은 내용이 "람다함수" 이다. 람다함수가 참 매력적인 친구라고 생각한다. 생각하는 그대로 타이핑 하여 함수를 만드는데 직관적이고 트렌드해 보인다. 다음에 이글에 추가해서 적어보려한다.