Program/Python

Python 함수

하랑파파♡ 2020. 9. 8. 16:33
728x90
반응형
SMALL

함수란?

입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내어놓는 것

파이썬 함수의 구조

def 함수명(매개변수):
    <수행할 문장1>
    <수행할 문장2>
    ...

def는 함수를 만들 때 사용하는 예약어
함수 이름 뒤 괄호 안의 매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수

매개변수와 인수

매개변수는 함수에 입력으로 전달된 값을 받는 변수
인수는 함수를 호출할 때 전달하는 입력값을 의미

def add(a, b):  # a, b는 매개변수
    return a+b

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

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

>>> def add(a, b):
...     return a+b
...

>>> result = add(a=3, b=7)  # a에 3, b에 7을 전달
>>> print(result)
10

>>> result = add(b=5, a=3)  # b에 5, a에 3을 전달
>>> print(result)
8

입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까?

// 매개변수 이름 앞에 *을 붙이면 입력값을 전부 모아서 튜플로 만들어 준다
def 함수이름(*매개변수): 
    <수행할 문장>
    ...

ex1)
/* 여러 개의 입력값을 모두 더하는 함수 */
>>> def add_many(*args): 
...     result = 0 
...     for i in args: 
...         result = result + i 
...     return result 
... 
>>>

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

>>> result = add_mul('add', 1,2,3,4,5)
>>> print(result)
15
>>> result = add_mul('mul', 1,2,3,4,5)
>>> print(result)
120

키워드 파라미터 kwargs

입력값이 모두 딕셔너리로 만들어져서 출력된다

>>> def print_kwargs(**kwargs):
...     print(kwargs)
...

>>> print_kwargs(a=1)
{'a': 1}
>>> print_kwargs(name='foo', age=3)
{'age': 3, 'name': 'foo'}

함수의 결괏값은 언제나 하나이다

>>> def add_and_mul(a,b): 
...     return a+b, a*b

/* 튜플로 결과값 리탄 */
>>> result = add_and_mul(3,4)
result = (7, 12)

/* 하나의 튜플 값을 2개의 결괏값처럼 받고 싶다면 다음과 같이 함수를 호출 */
>>> result1, result2 = add_and_mul(3, 4)

[return의 또 다른 쓰임새]
특별한 상황일 때 함수를 빠져나가고 싶다면 return을 단독으로 써서 함수를 즉시 빠져나갈 수 있다.

함수 안에서 선언한 변수의 효력 범위

a = 1
def vartest(a):
    a = a +1

vartest(a)
print(a) // 1이 출력된다

함수 안에서 새로 만든 매개변수는 함수 안에서만 사용하는 "함수만의 변수"이기 때문

함수 안에서 함수 밖의 변수를 변경하는 방법

return 사용하기

a = 1 
def vartest(a): 
    a = a +1 
    return a

a = vartest(a) 
print(a)

global 명령어 사용하기

a = 1 
def vartest(): 
    global a 
    a = a+1

vartest() 
print(a)

lambda

lambda는 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할
보통 함수를 한줄로 간결하게 만들 때 사용

/* 형식 */
lambda 매개변수1, 매개변수2, ... : 매개변수를 이용한 표현식

>>> def add(a, b):
...     return a+b
...
>>> result = add(3, 4)
>>> print(result)
7

>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)
7

참고 : https://wikidocs.net/24

728x90
반응형
LIST

'Program > Python' 카테고리의 다른 글

Python 파일 읽고 쓰기  (0) 2020.09.08
Python 입출력  (0) 2020.09.08
Python for문  (0) 2020.09.08
Python while문  (0) 2020.09.08
Python if문  (0) 2020.09.08