Language/Python

Py_07. 함수

Sumni Life 2021. 5. 24. 12:26

함수

 

01. 함수의 종류

1. 내장함수(빌트인함수) : 파이썬에 포함된 함수

      ex) print, range 등등 어떤 준비도 필요없이 사용가능한 함수

2. 모듈의 함수 : 비슷한 함수끼리 묶어논 것

3. 사용자 정의 함수 : 우리가 함수를 직접 만들어서 사용하는 함수


02. 함수의 기본 구조

  • 함수는 들어온 입력값을 받아 어떤 처리를 하여 적절한 결괏값을 돌려준다.
  • 입력값 -----> 함수 -----> 결과값

함수 기본 구조

함수를 만들때에는 def라는 키워드를 사용한다.

 

인수 = 입력 값 (함수가 받는 값) 

  • return = 반환값을 돌려준다.(함수가 돌려주는 값)
def 함수_이름(인수) :
    실행할 _명령
    return 반환값

 


[ my_func() 함수를 사용해 문자열을 출력하는 코드 ]

def my_func():
    print('토끼야 안녕!')

my_func()
my_func()

>> 토끼야 안녕!
   토끼야 안녕!

--

[ add() 함수를 사용해 두 개의 숫자를 더하는 코드 ]

def add(num1, num2):
    return num1 + num2

print(add(2,3))

>> 5

 


 

[ add_mul() 함수를 사용해 두 개의 숫자를 더하고, 곱하는 코드 ]

  • add = 더하기
  • mul = 곱하기
def add_mul(num1,num2):
    return num1+ num2, num1 * num2

print(add_mul(2,3))

>> (5, 6)

→ 튜플로 묶어서 패킹을해서 돌려줌.

 


03. 매개변수와 인수

매개변수와 인수는 혼용해서 사용되는 헷갈리는 용어

매개변수란?

  • 함수에 입력으로 전달된 값을 받는 변수

인수란?

  • 함수를 호출할 때 전달하는 입력값을 의미한다.
def add(a,b):   #a, b는 매개변수
    return a + b

print(add(3,4)) #3, 4는 인수

 


04. 입력값과 결괏값에 따른 함수의 형태

1. 일반적인 함수

  • 결괏값을 받을 변수 = 함수이름(입력인수1, 입력인수2, ...)
def add(a, b): 
    result = a + b 
    return result
a = add(3, 4)
print (a)

>> 7

2. 입력값이 없는 함수

  • 입력값이 없고 결괏값만 있는 함수
  • 결괏값을 받을 변수 = 함수이름()
def say():
    return 'hi'

a = say()
print(a)

>> hi

3. 결과값이 없는 함수

  • 결과값이 없는 함수 = 호출값 X
  • 함수이름(입력인수1, 입력인수2, ...)
    def add(a,b):
      print("%d, %d의 합은 %d입니다." % ( a, b, a+b) ) 
    

a = add(3, 4) >> 3, 4의 합은 7입니다.
print(a) >> None


4. 입력값도 결과값도 없는 함수

  • 입력 인수를 받는 매개변수(X) 없고, return문(X) 없는 함수
  • 함수이름()
```python
def say():
    print('hi')

say()

>> hi

 


05. 매개변수 지정하여 호출하기

  • 함수를 호출할 때 매개변수를 지정할 수도 있다.
    [ 구조 ]
    >>> def add(a, b):
    ...     return a+b
    ... 
    
[ add() 함수로 예시 ]
```python
number = add(a=3, b=7)  # a에 3, b에 7를 전달
print(number)

 >> 이렇게 매개변수를 지정하면 순서와 상관없이 사용할 수 있다.

number = add(b=5, a=3) # b에 5, a에 3를 전달
print(number)

 


06. 입력값 갯수를 모를 때 어떻게 해야하나????

  • 입력값이 여러개일 때 그 값들을 모두 더해주는 함수 = add()
  • But, 갯수가 몇 개인지 모를 때 사용

[ 구조 ]

def 함수이름(*매개변수): 
    <수행할 문장>
    ...
  • 괄호 안의 매개변수 부분이 * 매개변수로 바뀌었다. 

[ 여러 개의 입력값을 받는 함수 만들기 ]

def add_many(*args):
    age = 0
    for i in args:
        age = age + i
    return age

age = add_many(16,24,43,47)
print(age)

>> 130
def add_mul(choice, *args):
    if choice =="add":
        age = 0
        for i in args:
            age = age + i
    elif choice == "mul":
        age = 1
        for i in args:
            age = age * i
    return age

age = add_mul('add', 16,18,42,45)
print(age)
>> 121

age = add_mul('mul', 16,18,42,45)
print(age)
>> 544320