TIL3:python-function

Seoyul Kim·2020년 3월 25일
0

Python

목록 보기
4/16

function

  • 함수는 일정한 작업을 수행하는 코드블럭이다.

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

  • def 키워드를 사용하여 정의된다
def 함수명(parameter):
	문장1
	문장1
	[return 리턴값]
  • parameter 와 return 은 optional이다. input parameter가 없는 함수도 있을 수 있으며 리턴 값이 없는 함수도 있을 수 있다.
  • return 값은 함수에서 해당 함수르 호출한 주체(invoker)에게 결과값을 보내주는 것이다.
  • 함수를 사용하면 코드를 반복적으로 구현하지 않아도 되기 때문에 코드 양이 적어지고 또한 함수 이름 자체가 코드의 기능을 설명하기 때문에 코드에 대한 이해가 높아져서 가독성이 높아진다.

function parameters

def love_you(my_name, your_name):
	print(f”{my_name}loves{your_name}”)
love_you(“david”,”jessica”)
  • 함수는 input parameter를 받아서 return 값을 output으로 리턴한다.
  • 그리고 함수를 호출할 때 parameter 를 함수에 건내주어서 호출한다.

1. keyword arguments

  • 순서에 맞추어서 parameter 값을 전해주지 않을 수 있다.
  • 순서 대신에 parameter 이름으로 맞추어 값을 전해준다.
def love_you(my_name, your_name):
	print(f”{my_name}loves{your_name}”)
love_you(your_name=“jessica”, my_name=“daivd”)
  • parameter 순서에 맞추어 값을 함수에 넘기는 경우 실수로 값이 바뀌어도 알기 힘들다.
  • keyword arguments 방식으로 parameter 값을 전해주면 코드를 읽는 사람도 어떠한 값을 넘기는건지 명확하게 알 수 있기 때문에 가독성이 높아진다.

2. mixing positional arguments and keyword arguments

  • 순서를 맞추어 parameter 값을 전해주는 positional arguments와 keyword arguments를 혼용하여 사용하는 것도 가능하다.
def love_you(my_name, your_name):
	print(f”{my_name}loves{your_name}”)
love_you(“david”,your_name=“jessica”)
  • keyword arguments는 순서가 바뀌어도 상관없지만 positional arguments 부분은 순서를 지켜줘야한다.
love_you(your_name=“jessica”,”david”)  #이렇게 함수 호출시 에러발생

3. parameter default value

  • 함수의 parameter에 default 값을 정의해줄 수 있다.
  • default값이 정의된 parameter는 함수가 호출 될 때 값이 넘겨지지 않아도 괜찮다.
  • 값이 넘겨지지 않은 경우 default값이 자동으로 념겨지게 된다.
def love_you(my_name, your_name=“jessica”):
	print(f”{my_name}loves{your_name}”)
love_you(“david”) 로 호출시
“david loves jessica” 가 출력된다.
  • 함수를 호출할 때 2번째 parameter값을 정의하지 않았으나 default 값이 정의되어 있으므로 default 값이 자동으로 사용된다.
  • default 값을 가진 상태에서 함수를 호출하면 매개변수의 전달 인자의 유무에 따라 반환값이 달라진다.
  • 전달인자가 생략되면 디폴트 값이 계산되어 결과값으로 반환되고, 위치 인자를 사용하여 인자를 전달할 수도 있으며, 키워드 인자를 이용하여 매개변수의 인자를 전달할 수 있다.

default 값이 정의된 parameter가 default 값이 정의되지 않은 parameter보다 먼저 위치해 있으면 안된다.

  • 만일 default value parameter를 non-default value parameter 앞에 선언하면 syntax error가 난다.
def love_you(my_name="david", your_name):
	print(f”{my_name}loves{your_name}”)
love_you(“jessica”)  #my_name에 들어갈지 your_name에 들어갈지 모호해진다.

  • 해당 argument가 어떤 parameter에 해당하는지 모호해져 버리기 때문에 의도치 않는 함수 로직의 실행을 막고자 에러로 처리하게 된다.

    함수 안에서 매개변수의 작성 순서는
    1.positional parameter or non-default parameter
    2.keyword parameter or default parameter
    3.variable length positional parameter
    4.keyword-only parameter
    ( non-default keyword-only arguments, keyword-only arguments with defaults)
    5.variable length keyword parameter

0개의 댓글