본문 바로가기
파이썬

사용자 정의 함수

by 코낄2 2023. 9. 10.

사용자 정의 함수 사용자가 특정 작업을 수행하기 위해 직접 작성한 함수를 의미합니다. 파이썬에는 많은 내장 함수들이 있지만, 때로는 우리의 요구사항에 맞게 동작하는 함수를 직접 만들어야   있습니다. 함수는 소스 코드를 간결화하고 재사용의 목적으로 사용합니다. 

def 함수명(매개변수1, 매개변수2, ...):
    # 함수 내용
    return 결과값

함수 명은 동사로 작성하는 것이 좋습니다. 매개변수는 외부에서 값을 전달 받기위해서는 반드시 선언 되어야 하며, 그렇지 않다면 생략이 가능합니다. 함수 내용은 실행할 문장이고 생략이 가능하며 리턴값 역시 생략이 가능합니다.

 

1. 반환 값이 없는 함수

메소드 내에서 모든 작업이 완료가 될 떄, 사용하는 부분에 결과를 알릴 필요가 없을 떄는 반환값이 없는 함수를 사용합니다.

def func1():
    print('처음으로 만드는 함수!')  >> 처음으로 만드는 함수! 
# 프린트가 되고 작업 완료.
def func2(num):
    print(f'입력받은 숫자: {num}')

# 함수 안에 쓰여진 매개변수는 함수 밖에서 사용하지 못함.
def func3(start, end):
    sum = 0
    for i in range(start, end +1):
        sum += i
    print(f'{start}부터 {end}까지의 합: {sum}')

2-1. 반환 값이 있는 함수

def func4():
    print('안녕하세요 Python')

a = func4()
print(f'a에 저장된 값: {a}')    >> a에 저장된 값: None
# 프린트를 하고 작업이 종료되었기 때문에 저장된 반환값은 없다,
 
def func5():
    return '🎁'

presents = func5()
print(f'presents에 저장된 값: {presents}')     >> presents에 저장된 값: 🎁
def func6(num1, num2):
    sum1 = num1 + num2
    return sum1
result = func6(10, 5)
print(result)      >> 15

# print(sum1) # NameError: name 'sum1' is not defined

2-2. 여러개의 반환 값

def func10(num1, num2):
    return num1+num2, num1-num2, num1*num2, num1/num2
 
result1, result2, result3, result4 = func10(10,3)
print(f'덧셈:{result}, 뺄셈:{result2}, 곱셈:{result3}, 나눗셈:{result4} ')
 
>> 덧셈:15, 뺄셈:7, 곱셈:30, 나눗셈:3.3333333333333335

3. 기본값이 설정된 매개변수

def func6(num1= 1, num2= 1):
    sum1 = num1 + num2
    return sum1
 
print(func6())                >> 2
print(func6(10))            >> 11
print(func6(10,3))         >> 13
print(func6(num2=10)) >> 11 # 뒤에 변수에 넣어주고 싶을 때는 명시를 해준다.

4. 가변 매개변수

def func7(*nums): # * 를 붙이면 변수의 갯수를 정해두지 않고 변수를 넣을 수 있다.
    result = 0
    for i in nums:
        result += i
    return result
 
print(func7())                              >> 0
print(func7(10,30))                     >> 40
print(func7(10,30,40,50,100))    >> 230

5. 키워드 매개변수(중요!!!)

def func8(id, name, age):
    print(f'아이디:{id}')
    print(f'이름:{name}')
    print(f'나이:{age}')
func8('apple','김사과','20')
func8(id = 'apple',name = '김사과',age = '20')
위에 모두 결과 값  >> 아이디:apple 이름:김사과 나이:20
dic1 = {'id':'apple', 'name':'김사과', 'age':20}
func8(**dic1) # 키를 확인하고 해당 값을 넣어달라는 명령어 **
 >> 아이디:apple 이름:김사과 나이:20
func8(*dic1) # 키가 보내짐
 >> 아이디:id 이름:name 나이:age
def func9(**args):
    print(args)
 
func9(id = 'apple',name = '김사과',age = '20') # 반대로 풀어서 보내야 딕셔너리로 묶어서 받는다.
>> {'id': 'apple', 'name': '김사과', 'age': '20'}
def func9(**args):
    for i in args:
        if i == 'id':
            id = args[i]
    return id
 
user = func9(id = 'apple',name = '김사과',age = '20')
print(user)    >> apple

***None의 특징

None 파이썬에서 특별한 값으로, 아무런 값이 없음을 표현하는  사용됩니다. 다른 언어에서의 null 또는 nil 유사한 개념입니다.

None 파이썬의 내장 상수이며,  자체로 데이터 타입이 NoneType입니다. 모든 None 동일하므로,  개의 None 값을 비교할  항상 True 반환합니다.

1. 기본 초기값 설정: 변수를 초기화할  아무런 값이 할당되지 않았음을 나타내기 위해 None 사용할  있습니다.

variable = None 

2. 함수의 반환 값으로 사용: 함수에서 특정 조건에서 아무런 값도 반환하지 않아야   None 사용합니다. 사실, 함수에서 return 문이 생략되거나 없으면 기본적으로 None 반환합니다.

def my_function(x):
    if x > 10:
        return x
    # else:
    #   return None  # 이 생략된 것이라고 보면 됩니다.

3. 선택적 매개변수의 기본값: 함수의 매개변수에 기본값으로 None 할당하여 선택적으로 인자를 전달받을  있게 만들  있습니다.

def hello(message=None):
    if message is None:
        print('Hello!')
    else:
        print(message)

4. 값의 존재 여부 확인: None 사용하여 값의 존재 여부를 확인할  있습니다. None 검사할 때는 == 대신 is 연산자를 사용하는 것이 좋습니다. == 연산자는 값의 내용을 비교합니다. 예를 들어, 두 문자열이 같은 문자를 가지고 있는 경우 == 연산자로 비교하면 True가 반환됩니다. is 연산자는 두 객체의 식별자(메모리 주소)가 동일한지를 비교합니다. 즉, 객체가 정확히 같은 객체인 경우에만 True를 반환하고, 다른 객체인 경우에는 False를 반환합니다.

li1 = [1,2,3,4,5]
li2 = [1,2,3,4,5]

result1 = li1 is li2  # 두 대상이 서로 다른 객체이다. (객체 비교)
result2 = li1 == li2  # 두 객체의 값이 같다.(값 비교)

print(result1)
print(result2)

'파이썬' 카테고리의 다른 글

객체지향과 클래스  (0) 2023.09.12
콜백 함수/람다함수/재귀호출  (0) 2023.09.12
제어문-반복문  (0) 2023.09.08
제어문- 조건문  (0) 2023.09.07
파이썬 연산  (0) 2023.09.07