[Python] 사용자 정의 함수

개린이·2023년 9월 25일
0

Python

목록 보기
19/20
post-thumbnail

사용자 정의 함수

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

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

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

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

반복문 응용

for i in range(5): #반복문에서 함수 실행
    func1()


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

def func2(num): #num 매개변수
    print(f'입력받은 숫자: {num}')
func2(5) # 함수실행

매개변수로 받은 num은 함수 안에서만 사용 가능하다.

func2('안녕') 

정수가 아닌 문자열을 넣어도 데이터 타입을 지정해주지 않아 오류가 나지 않는다 그래서 파이썬은 프로그램을 잘못 짤 가능성이 많다.

심화예제

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

func3(10, 20)


반환 값이 있는 함수

def func5():
    return '🎁'
presents = func5()
print(f'presents에 저장된 갑: {presents}')

def func6(num1, num2):
    sum = num1 + num2
    return sum
result = func6(10, 5)
print(result)


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
        
 a = my_function(1)
print(a)

x가 10 이하일 때는 아무런 값도 반환하지 않게 코드를 작성하였지만. 실제로는 None이 반환된다.

3. 선택적 매개변수의 기본값

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

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

4. 값의 존재 여부 확인

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

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

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

None을 검사할 때는 == 대신 is 연산자를 사용하는 것이 좋습니다. is는 객체의 동일성을 검사하는 반면, ==는 객체의 동등성을 검사하기 때문입니다.

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

# 서로 다른 객체
result1 = li1 is li2
# 값이 다른 객체
result2 = li1 == li2

print(result1)
print(result2)


기본값이 설정된 매개변수

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

def func6(num1 =1, num2=1): # 안넣었을경우 1로 들어감
    sum = num1 + num2
    return sum
print(func6())

print(func6(10))

print(func6(10, 3))

print(func6(num2=10))

뒤에있는 매개변수에 넣고싶을 때 num2라는걸 명시해주면 된다.


가변 매개변수

def func7(*args):
    result = 0
    # print(args)
    for i in args:
        result += i
    return result
print(func7(10, 30, 70, 90, 100))


키워드 매개변수

def func8(id, name, age):
    print(f'아이디: {id}')
    print(f'이름: {name}')
    print(f'나이: {age}')
func8('apple','김사과',20)
func8(id='apple',name='김사과',age=20)

결과가 같게 나온다.

dic1 = {'id':'apple','name':'김사과','age':'20'}
func8(**dic1)
  • 무조건 매개변수명과 키값이 일치해야한다.
  • 딕셔너리의 키는 만드시 문자열 형태여야한다
  • 딕셔너리 값을 보낼 때 ** 를 앞에 써줘야한다.
  • 키를 보낼때에는 * 한개를 입력한다
def func9(**args):
    print(args)
    for i in args:
        if i == 'id':
            id = args[i]
    return id
# 받을 때 딕셔너리로 받아야한다
user = func9(id = 'apple', name='김사과',age=20)
print(user)


여러개의 반환 값

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

result1, result2, result3, result4 = func10(10, 3)

print(f'덧셈 :{result1}, 뺄셈: {result2}, 곱셉: {result3}, 나눗셈: {result4}')

곱셈의 결과만 필요할 때

_, _, result3, _ = func10(10, 3)
print(result3)

0개의 댓글

관련 채용 정보