상세 컨텐츠

본문 제목

사용자 정의 함수

인공지능/파이썬

by Ryuzy 2023. 9. 7. 02:27

본문

728x90
반응형

1. 사용자 정의 함수

사용자 정의 함수란 사용자가 특정 작업을 수행하기 위해 직접 작성한 함수를 의미합니다. 파이썬에는 많은 내장 함수들이 있지만, 때로는 우리의 요구사항에 맞게 동작하는 함수를 직접 만들어야 때가 있습니다. 이때 사용자 정의 함수를 작성하게 됩니다.

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

 

 

2. 매개변수와 반환 값이 없는 함수

def func1():
    print('처음으로 만드는 함수!')
    
func1()
func1()

for i in range(5):
    func1()

 

 

3. 매개변수가 있고 반환 값이 없는 함수

def func2(num):
    print(f'입력받은 숫자: {num}')
    
func2(10)
func2(4)

 

def func3(start, end):
    sum = 0
    for i in range(start, end+1):
        sum += i
    print(f'{start}부터 {end}까지의 합: {sum}')

func3(1, 10)
func3(1, 100)

 

 

4. 반환 값이 있는 함수

def func1():
    print('처음으로 만드는 함수')

func1()
temp = func1()
print(temp)

temp = func1
print(temp)
temp()

 

def func4():
    return '🎁'

print(func4())
temp = func4()
print(f'temp에 저장된 값: {temp}')

 

def func5(num1, num2):
    sum = num1 + num2
    return sum

print(func5(10, 5))
temp = func5(4, 3)
print(temp)

print(func5(10)) # TypeError: func5() missing 1 required positional argument: 'num2'

 

 

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

def func6(num1=0, num2=0):
    sum = num1 + num2
    return sum
    
print(func6())
print(func6(10))
print(func6(10, 3))
# print(func6(, 3))
# print(func6(None, 3))
print(func6(num2=3))

 

 

6. 가변 매개변수

함수를 호출할  * 사용하면 시퀀스(리스트, 튜플 등)의 요소를 개별적인 위치 인자로 풀어서 전달할  있습니다.

def func7(*args):
    return args
    
print(func7())
print(func7(10))
print(func7(10, 30, 50))

 

def func8(a, b, c):
    return a + b + c

numbers = [1, 2, 3]
print(func8(*numbers))



7. 키워드 매개변수

키워드 매개변수는 일반적으로 기본값이 설정된 매개변수와 함께 사용됩니다. 함수의 매개변수에 기본값을 설정하면, 함수를 호출할 때 해당 매개변수를 생략할 수 있습니다.

def func9(id, name, age):
    print(f'아이디: {id}')
    print(f'이름: {name}')
    print(f'나이: {age}')
    
func9('apple', '김사과', 20)
func9(age=30, id='orange', name='오렌지')

# 매개변수명과 딕셔너리의 키가 같아야함
# 딕셔너리의 키는 반드시 문자열 형태
dic1 = {'age':25, 'id':'banana', 'name':'반하나'}
func9(**dic1)

# *의 데이터를 보낼 경우 키가 저장
func9(*dic1)

 

 

8. 여러개의 반환 값

def func10(num1=0, num2=0):
    return num1+num2, num1-num2, num1*num2, num1/num2

result = func10(10, 3)
print(result)

result1, result2, result3, result4 = func10(10, 3)
print(f'덧셈:{result1}')
print(f'뺄셈:{result2}')
print(f'곱셈:{result3}')
print(f'나눗셈:{result4}')

_, _, result3, _ = func10(10, 3)
print(f'곱셈: {result3}')

 

li1 = [10, 20, 30, 40, 50]

for _, v in enumerate(li1):
    print(f'값: {v}')

 

 

9. 메모리 제거

함수도 파이썬 객체이므로 참조 카운팅과 가비지 컬렉션의 원칙에 따라 동작합니다. 함수를 참조하는 변수나 요소가 없게 되면 해당 함수는 가비지 컬렉터에 의해 메모리에서 제거될 수 있습니다. del 명령어를 사용하여 함수에 대한 참조를 명시적으로 제거할  있습니다. 하지만 이것이 함수가 즉시 메모리에서 제거된다는 것을 보장하지는 않습니다.

def func1():
    print('처음으로 만드는 함수')

del func1
# 이후 func1()을 호출하려고 하면 오류가 발생합니다.

 

 

 

10.  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
    # x가 10 이하일 때는 아무런 값도 반환하지 않습니다. 실제로는 None이 반환됩니다.

 

3. 함수의 매개변수에 기본값으로 None 할당하여 선택적으로 인자를 전달받을 있게 만들 있습니다. None을 검사할 때는 == 대신 is 연산자를 사용하는 것이 좋습니다. is는 객체의 동일성을 검사하는 반면, ==는 객체의 동등성을 검사하기 때문입니다.

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

 

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

# 객체 비교
result1 = li1 is li2
# 값 비교
result2 = li1 == li2

print(result1)
print(result2)

 

4. 값의 존재 여부 확인: None 사용하여 값의 존재 여부를 확인할 있습니다.

# 값의 존재 여부 확인
def get_data_from_database():
    pass

data = get_data_from_database()
print(data)
if data is None:
    print('데이터를 수신하지 못함!')
else:
    print('데이터를 수신받음!')
728x90
반응형

'인공지능 > 파이썬' 카테고리의 다른 글

콜백함수와 람다함수  (0) 2023.09.07
변수의 범위  (0) 2023.09.07
컬렉션과 반복문  (1) 2023.09.06
제어문 - 반복문  (0) 2023.09.05
제어문 - 조건문  (0) 2023.09.05

관련글 더보기