TIL #26-2 Python : Repl.it 공부2

채록·2021년 1월 13일
0

짜투리

목록 보기
16/26
post-thumbnail

#27 : 함수 / Function()

함수란? 일정한 작업을 수행하는 코드 블럭

I. 함수의 구조 (python의 용어 유의)

input을 받아서 어떠한 계산or기능을 실행하고 결과값인 output을 생성한다!
Input -> 함수 -> Output

Python에서 input은 parameter / output은 return 값 이라고 한다.

def 함수명(parameter):
    문장1
    문장2
    ...
    문장N
    [return 리턴값]
  • parameter와 return 은 optinal 이다. 둘중 하나가 없는 형태도 존재한다.

II. 함수를 사용하는 이유

  1. 반복되어 계속 사용되는 코드들을 함수로 정의하여 효과적으로 사용하기 위해.
  2. 함수로 정리를 해서 코드의 가독성을 높이기 위해.

III. 함수+조건문

조건에 따른 함수를 만들고자 한다면 다음과 같다.

def 함수이름:
    if 조건:
        return 조건이 참일경우 함수의 값
    else:
        return 조건이 거짓일 경우 함수의 값



28 : Function Parameters

input인 parameter


I. 복수의 parameters 지정 방법

복수의 parameter를 사용할때는 세가지 구조로 사용이 가능하다.

  1. Positional Arguments 방법
  2. Keyword Arguments 방법
  3. Positional Argument와 Keyword Argument를 혼합하는 방법

1. Positinal Arguments

말 그대로 위치에 따라 순서대로 배열된다. 가장 기본적인 방법이다.

def 함수이름(parameter1, parameter2):
    print(함수 호출시 출력될 내용)
함수이름(parameter1의 값, parameter2의 값)

-> parameter1의 값과 parameter2의 값을 적용하여 출력된 함수의 return

실습 예제1

def love_you(my_name, your_name):
print(f'{my_name} loves {your_name}')
love_you('딸','엄마')

->
딸 loves 엄마

2. Keyword Arguments

해당 keyword와 그에 대한 값을 정확히 명시해 주는 것이다.

def love_you(my_name, your_name):
print(f'{my_name} loves {your_name}')
love_you(your_name='엄마',my_name='딸')

->
딸 loves 엄마

위 예제처럼 keyword에 대한 값을 정확히 명시해서 알려주면 순서에 상관없이 의도한 대로 결과가 출력된다.

이 방법을 통해

  1. 순서의 구애를 받지 않는다.
  2. 코드의 가독성이 높아진다. (어떤 parameter에 대한 값인지 한눈에 들어온다.)

와 같은 효과를 얻을 수 있다.


3. (Mix) Positional + Keyword Argument

positional 과 keyword argument를 혼합하여 사용하는 방법이다.
단 이럴땐 positional과 keyword argument 간의 순서에 유의해야 한다!

1) Positional 먼저, keyword 나중

def love_you(my_name, your_name):
print(f'{my_name} loves {your_name}')
love_you('딸',your_name='엄마')

->
딸 loves 엄마

문제없이 잘 출력된다.

2) keyword 먼저, positional 나중

def love_you(my_name, your_name):
print(f'{my_name} loves {your_name}')
love_you(your_name='엄마','딸')

->
Traceback (most recent call last):
    File "python", line 3
SyntaxError: positional argument follows keyword argument

이처럼 실질적으로 뒤에 위치한 parameter2값이 keyword 방법으로 지정되고, 그 위에 실질적으로 앞에 위치한 parameter1값이 뒤에 지정됐을 경우 SyntaxError: positional argument follows keyword argument 에러가 뜬다!



II. Parameter default value

복수 (예시로 2개)의 parameter들 중 하나의 값에 대해 default value(기본 값)을 지정해 주어도 된다.

def love_you(my_name, your_name='엄마'):
print(f'{my_name} loves {your_name}')
love_you('딸')
->
딸 loves 엄마

1. default value 지정 순서

복수의 parater들 중 몇가지에 대해 default value를 주고자 할때 그 순서가 중요하다.
결론부터 말하면 non-default value를 가진 parameter는 default value를 가진 parameter보다 뒤에 위치할 수 없다!

def love_you(my_name='딸', your_name):
  print(f'{my_name} loves {your_name}')
love_you('엄마')
->
  File "main.py", line 1
    def love_you(my_name='딸', your_name):
                 ^
SyntaxError: non-default argument follows default argument

이처럼 에러가 발생한다.
따라서 복수의 parameter를 사용하면서 일부에 대해 default value를 지정하려면 항상 뒤쪽에 위치해주어야 한다!

profile
🍎 🍊 🍋 🍏 🍇

0개의 댓글