본문 바로가기

IT/python

[python] 파이썬 함수 특징 설명

안녕하세요 남갯입니다


오늘은 파이썬 함수의 구조에 대해 말씀드리도록 하겠습니다.


파이썬 함수의 구조는 아래와 같습니다.


def 함수명(입력 인자):

수행할 내용


이걸 이용해 덧셈을 만들어보면


def sum(a,b):
return a+b


이와같은 형태로 제작이 가능합니다.


java는 

function sum(int a, int b){

return a + b

}

kotlin은 

fun sum(a :Int, b :Int) = a + b


이와같이 파이썬도 간단합니다


파이썬은 일급함수 


자바스크립트 , 코틀린에서도 제공하는 


일등시민이라고 다음조건을 충족한다면 일등 시민이라고 할 수 있다.


변수나 데이터가 할당 가능

객체를 인자도 전달 가능

객체의 리턴값으로 리턴 가능


부분을 제공한다.


크게 장점으로는

1. 함수를 변수에 할당할수 있다.

2. 함수를 함수의 인자로 전달이 가능하다.

3. 함수를 다른함수 내에서 정의 가능하다.

4. 함수의 리턴값으로 또 다른 함수를 리턴가능하다.


1번만 설명을 하고 넘어가도록 하겠다.



일단 변수에 함수를 할당할 수 있다


아까 만들었던 함수를 이용하여

a = 3
b = 4
c = sum(a,b)

print(a)
print(b)
print(c)


이런형태로 출력하였더니 


==================================================

3

4

7

==================================================


위와 같은 결과값을 얻을 수 있었다.


파이썬의 장점으로는 여러값을 한번에 받아서 표현할 수 있다.



def multi(*args):
multi = 1
for i in args:
multi *= i
return multi

c = multi(3,4,5,6)
print(c)



이렇게 *뒤에 어떠한 변수명을 붙이게 되면

3,4,5,6의 값을 모두 읽어 곱해주는 함수를 만들었다.



==================================================

360

==================================================


위와같이 3x4x5x6의 결과값인 360이 나온다.



이 형태의 함수의 결과를 보자

def a(a,b):
return a, (a+b)

print(a(3,4))

기본적으로 다른언어에서는 에러가 날 수도 있는 부분이지만

파이썬에서는 (3,7)라는 튜플로 반환한다


def a(a,b):
return a, (a+b)

c, d = a(3,4)

형태로 이용하게되면

c = 3 d =7로 할당이 된다.



파이썬은 함수의 입력인수의 초기값도 설정할 수 있다.

코틀린에서와 비슷하다.


def a(a, b=5):
return a + b
print(a(4))


위의 함수에서 볼 수 있듯이 b에 대한 초기값을 설정하였다.


하지만 저런 초깃값을 제공하는 언어의 함수들은 대부분 디폴트값을 설정한 변수를 뒤에 두도록 하고있다.


파이썬의 인터프리터, 다른언어의 컴파일러들은 (a = 5 ,b) 형태처럼앞에다가 두고 저형태로 사용하게 되었을때 어떤 부분에다가 넣어야할지를 모른다.




파이썬 함수를 이용하다가 오해하는 경우가 있을수 있는데,


a = 1
def test(a):
a = a +1
print(a)
test(a)
print(a)


이러한 환경을 제공했을때


test함수가 불리면 a의 값은 변화는것처럼 보이지만


아래의 print함수의 값은 1로 동일한 결과를 보인다.


==================================================

1

1

==================================================


즉 함수내의 변수명과 바깥의 a는 무관하다



- 공부의 출처 = 점프 투 파이썬