[TIL]Python . Function

여주링·2020년 11월 21일
0

Python

목록 보기
2/15

함수(function)

정의

함수란 일정한 작업을 수행하는 코드블럭이다. 개념적으로는 수학과 동일하다
함수를 사용하는 이유는
1.반복되어 계속사용되는 코드들을 함수로 정의해 효과적으로 사용하기위해
2.코드의 가독성을 높이기 위해

파이썬에서 함수는 def키워드 정의된다

def 함수이름(parameter):
	문장1
	문장N
    [return 리턴값]

parameter은 매개변수라고 하며, parameter를 받아 결과값을 도출해낸다. 여기서의 결과값(output)은 return값이라고도 한다.

return과 print의 차이에 대해 확실하게 이해를 하기 어려웠는데
[https://sscoding.tistory.com/2] 이 글을 보고 한번에 이해했다. 혹시 나처럼 어려우신분들은 이분의 글을 읽어보시는걸 추천!

parameters의 종류

1.positional arguments(위치 매개변수)

def test(a, b, c):
	print(a + b + c)
    
test(a + b + c)	

위의 예시처럼 함수에서 정의한 위치대로 대입되는 보통의 인자를 의미한다.

2.Keyword Argument(키워드 매개변수)

매개변수 이름을 지정해서 입력하는 매개변수를 키워드 매개변수라고 한다.
위의 예시에서

test(a=10, b=5, c=7)

처럼 입력하는것을 의미힌다.

키워드 매개변수 방식으로 매개변수값을 전해주면 위치가 마구잡이로 되어도 잘 맞춰 들어간다.

def test(a, b, c):
	print(a + b + c)
    
test(c=7, b=5, a=10)	

3.Mixing positional arguments and keyword arguments

순서를 맞추어서 parameter 값을 전해주는 positional arguments와 keyword arguments를 혼용하는 것도 가능.

python
def test(a, b, c):
	print(a + b + c)
    
test(a=10, 5, 6)

여기서 주의할 점은 키워드 매개변수만 있을경우 순서가 뒤죽박죽이 되어도 상관이 없으나
positional의 경우에는 본인 위치에 반드시 있어야하기 때문에 test(c=6, 10, 5)로 입력시 Error가 발생한다
position argument의 경우 반드시 순서가 지켜져야 하는 속성이 있으므로 keyword가 와도 그 속성은 변하지 않는다는 점을 이해하면 될 듯!

4.Parameter Default Value(기본 매개변수)

매개변수에 처음부터 값을 정해줄 수도 있다. 함수를 정의할때 (매개변수 = 값)형태로 지정해주면 되며, 이는 매개변수를 입력하지 않았을때 자동으로 매개변수에 들어가는 값이 된다.

def test(a, b, c=10):
	print(a + b + c)
    
test(1,3) #>c의 값이 빠져있으나 이경우 결과값은 1+3+10 =14가 된다
			#c에 10이라고 사전에 입력을 했기때문!

여기서 주의할 점은 기본 매개변수의 뒤에는 일반 매개변수가 올수 없다는점이다
먄약 test(a, b=10, c)가 가능하다면 print(1,3)을 입력할 경우
3이라는 숫자가 b에 가야할지, c에 가야할지를 정하지 못하는 상황이 발생한다.
따라서 파이썬에서는 내부적으로 룰을 정한 것이다.

5.variable length arguments(가변 매개변수)

가변인수란 인수를 원하는 만큼 받을 수 있는 함수로 *를 붙여 * args 형태로 표시하며 다음과 같은 구조를 가진다.

가변인수 뒤에는 일반 인수는 올 수 없으며, 가변인수는 하나만 사용할 수 있다.

def func_param_with_var_args(name, age, *args):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
 
func_param_with_var_args("김코드", "0101234", "seoul", 20, "HI")

6.variable length keyword arguments(가변 키워드 매개변수)

키워드 매개변수 + 가변 매개변수 의 형태
인수앞에 **을 붙여 **kwargs의 형태로 나타난다. 여러개의 값을 받아올 수 있으며, 가장 끝에 위치

def func_param_with_kwargs(name, age, address=0, **kwargs):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)


func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")

7. 위치 매개변수/가변 키워드 매개변수 순서

def mixed_params(name="아이유", *args, age, **kwargs, address):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

이렇게 할 경우 SyntaxError: invalid syntax 라는 에러가 뜬다! 이는 작성한 코드자체가 문제가 있어서 해결이 되지 않는 다는 뜻이다.

위치매개변수와 가변 키워드 매개변수는 아래와 같은 순서대로 정리한다.
매개변수들의 특징을 잘 이해하는게 중요할것 같다!

def mixed_params(age, name="아이유", *args, address, **kwargs):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)
 
mixed_params(20, "정우성", "01012341234", "male", mobile="01012341234", address="seoul")

profile
🌱Backend Developer👩‍💻

0개의 댓글