Python/Basic

[파이썬] Function 작성법 총정리

Ddolgom 2023. 7. 21. 17:31
반응형

파이썬에서의 함수 작성은 간단하기도 여러가지 방법이 있다.

매번 쓰면서 헷갈리는 부분들이 있어서 이번 기회에 총정리 하고자 한다.

 

# 1. 함수의 필요성

- 특정 작업을 수행하는 명령문의 그룹

- 프로그램의 기능 단위로 모듈을 구성하는데 사용

- 프로그램이 복잡해지고 커질 때 함수를 사용하면 관리하기 쉬워지고 클래스 작성시에 필수적인 방법이다. 

- 코드의 재사용이 가능하다.

 

# 2. 용어 정리

- argument (인수) : 함수에 전달하는 객체 (instance, object)

- parameter (매개변수) : 인수를 가리키는 이름 (인수를 저장할 변수)

- return (리턴값) : 함수의 결과를 출력하는 것 (반환)

 

def add(a, b): # a, b가 parameter 즉, 매개변수이다.
	return a + b

result = add(10, 20) # a, b에 전달되는 객체로 인수이다. 즉 객체 (instance, object)
print(result)

# 3. 함수의 형태

 

(1) Parameter X, return X (Parameter, return 모두 없는 형태)

(2) Parameter X, return O (Parameter만 없고 return이 있는 경우)

(3) Parameter O, return O (Parameter, return 모두 있는 형태)

(4) Parameter O, return X (Parameter는 있고 return이 없는 경우)

 

다음과 같이 4가지 형식이 있다. 기본적으로 4가지 형태에서 쭉 뻗어서 파생이 되는 경우 

def func(): # (1) paramter, return 모두 없는 형태
print('func')

x = func()
print(x)
def func(): # (2) parameter 없고 return만 있는 형태
	return 'run func!'
x = func()
print(x)
def func1(a,b): # (3) parameter, return 모두 있는 형태	
	return a + b

x = func1(1, 2)
print(x)
def func2(a, b): # (4) parameter 있고, return 없는 형태
	print(a+b)
x = func2(1, 2)
print(x)

(4) 실행 결과

 

# 4. argument의 종류

(1) 함수의 호출시 사용되는 argument

- positional argument : 위치에 따라 값이 전달되는 방식

- keyword argument : = 를 사용하여 특정 parameter에 값을 제공함, 순서에 상관없음

(2) 함수 정의시 사용되는 argument

- default argument : 새로운 arguemnt가 전달되지 않을 경우 사용되는 기본 값

(3) Python의 argument rule

- 함수 정의시 : non-default argument가 앞, default argument가 뒤에 위치

- 함수 호출시 : positional argument가 앞, keyword arguemnt가 뒤에 위치

 

def function(a, b):
	return [a, b]

x = function(10, 20) # positional argument - 순서에 의해서 paramter에 argument를 전달
y = function(b=10, a=20) # keyword argument - parameter를 지정하여 argument를 전달
print(x, y)
def mySum(a, b=0): # default argument가 뒤쪽에 와야 한다.
	return a + b
 
 mySum(10), mySum(10, 5)
def func(a, b, c):
	return a + b + c
    
 func(10, c=20, b=30) # keyword argument가 뒤쪽에 위치해야 한다.
def func(a, b=1, c=2): # 디폴트가 뒤쪽에 와야 한다.
	return a + b + c
 
 func(10)

결괏값

# 4. Parameter의 종류 (5가지)

(1) positional or keyword parameter (a, b, c)

가장 많이 사용하는 방식

 

(2) positional only parameter (a, b, /) # ver 3.8 이후 제공

특정 파라미터가 반드시 위치 인자로 전달되도록 강제하는 기능

 

(3) keyword only parameter (*, a, b)

키워드 파라미터만 사용가능

 

(4) var-positional parameter (*a)

def func(*args) : 값들이 튜플로 묶여서 args에 전달

 

(5) var-keyword parameter (**a)

def func(**args): 전달되는 내용이 딕셔너리로 묶여서 args에 전달

 

# (1) positional or keyword parameter

def func(a):
	print(a)
 
 func(10) # positional argument
 func(a=20) # keyword argument
# (2) positional only parameter
# python v3.8 이상에서 사용 가능

def func(a, b, /): # 슬래시를 사용함으로써 특정 파라미터가 반드시 위치 인자로 전달되도록 강제할 수 있으며 , 함수 호출 방식을 제한하고자 할때 사용
p	print(a)

func(10, 20)
# (3) keyword only parameter

def func(*, a, b):
	print(a)
    
  func(b=20, a=10) # keyword argument
  func(10, 20) # 이 경우에는 positional로 전달하려고 해서 Error가 발생
# 내용 체크
def func(a, *, b, c): # a : positional or keyword parameter
	return a + b + c # b, c : keyword only parameter
    
 func(10, b=20, c=30)
 func(a=10, b=20, c=30)
 
 func(c=30, b=20, a=10) # keyword argument일때는 순서가 중요하지 않다.
# (4) var positional parameter
# a의 type은 튜플로 나온다.
def func(*a):
	print(type(a), a)
func(1, 2, 3, 4, 5, 6, 7)
func()

결괏값

def func(*a, b):
	print(type(a), a)
    print(b)
 func(1, 2, 3, 4, 5, 6, 7, b=10)
 func(b=20) # 이런식으로도 전달이 가능하다 (빈 튜플이 생성되고, b=20 만 전달)
# (5) var-keyword parameter : 맨 마지막 parameter로만 사용가능
#
def func(**a):
print(type(a), a)

func(A=10, B=20, C=30, D=40)
func() # 빈 딕셔너리 생성함

결괏값

다음과 같이 사용을 할 수 있으며, 몇가지 요소들은 필수적인 암기가 필요하다.

반응형

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

[Python] lambda 함수 사용  (0) 2022.11.08
[Python] glob함수 사용  (0) 2022.11.07
[Python] 설치된 모든 패키지 버전 확인  (0) 2022.10.25
[파이썬]포매팅(formatting) 총정리 - 1  (0) 2022.09.08
[Python] 파일 읽고 쓰기  (0) 2022.04.17