[파이썬] 함수

2024. 8. 4. 23:13카테고리 없음

함수를 생성하는 방법

 

def 함수명(매개변수):
	코드

 

total_object = {'cola':5, 'cider':10}

def add_object(name, count):
    total_object[name] += count
    print(name + '재고 :', str(total_object[name]))
    
add_object('cola', 10)
add_object('cider', 20)

 

cola재고 : 15

cider재고 : 30

 

매개변수와 인수

매개변수는 함수 호출 시 함수로 전달받은 데이터를 저장하고 있는 변수.

보통 '매개변수'또는 '파라미터(Parameter)'라고 부른다.

매개변수는 함수 생성 시 사용하지 않을 수도 있고, 사용할 수도 있다.

매개변수가 없는 함수는 다음과 같다.

 

def notice():
    print('오늘은 헤이마트 휴일입니다.')
    
notice()

오늘은 헤이마트 휴일입니다.

 

def find_object(name):
    if name == 'cola':
    	print('1층 A-1 코너에 있습니다.')
    elif name == '사과':
    	print('1층 A-5 코너에 있습니다.')
        
find_object('사과')

1층 A-5 코너에 있습니다.

 

함수를 호출할 때 매개변수에 해당하는 데이터를 '인수'라고 한다.

find_object('cola')에서 'cola'가 인수이다.

 

 

매개변수의 다양한 사용 방법

 

2개 이상의 매개변수 사용

 

여러 개의 매개변수를 사용할 때는 함수를 다음과 같이 생성해야 한다.

다음은 헤이마트 신규교객을 입력하는 코드이다.

def insert_user(name, age, phone):

    user_info = {}
    user_info['name'] = name
    user_info['age'] = age
    user_info['phone'] = phone
    print(user_info)
    
insert_user('김마트', 21, '01012345678')

{'name': '김마트', 'age': 21, 'phone': '01012345678'}

 

매개변수 입력 데이터 수가 정해지지 않은 경우

 

매개변수를 생성할 때 입력되는 데이터가 변하는 경우도 있다.

예를들어 어떤 경우에는 매개변수에 3개의 데이터, 어떤 경우에는 1개의 데이터가 입력될 수 있다. 

이 경우에는 변수명 앞에 *를 붙여서 매개변수를 생성한다.

매개변수로 입력되는 데이터는 튜플형태로 저장된다.

 

def insert_cart(*data):
    print(data)
    
insert_cart('사과', '설탕', '커피')
insert_cart('콜라', '사이다')

('사과', '설탕', '커피')

('콜라', '사이다')

 

*를 넣어 함수를 생성하면 함수를 호출해서 사용할 때 인수를 마음대로 입력할 수 있다.

 

 

키워드 매개변수 사용

 

키워드 매개변수는 매개변수 앞에 **를 붙여 사용,

함수 호출 시 매개변수의 값을 '변수명=데이터'와 같은 형태로 입력하여 사용.

매개변수에 입력되는 값은 딕셔너리로 전달된다.

 

def insert_cart(**kwargs):
    print(kwargs)
    
insert_cart(data = ['사과', '콜라', '캔디'], count = [4, 3, 2])

{'data': ['사과', '콜라', '캔디'], 'count': [4, 3, 2]}

 

kwargs 매개변수에 딕셔너리 자료형으로 저장된 것을 확인

매개변수에 초깃값 사용

매개변수 생성 시 초깃값을 사용할 수 있다.

 

def 함수명(매개변수 = 초깃값):
	코드
def insert_user(name, age, phone = '0100000000'):
    user_info = {}
    user_info['name'] = name
    user_info['age'] = age
    user_info['phone'] = phone
    print(name)
    print(age)
    print(phone)
    
insert_user('김마트', 21)

김마트

21

0100000000

 

phone 매개변수에 초깃값으로 '01000000000'을 넣었다.

매개변수에 초깃값이 있는 경우, 인수를 입력하지 않으면 매개변수에 초깃값이 입력된다.

insert_user 함수를 사용할 때 세번째 인수를 넣지 않고 이름과 나이만 입력하여 phone 매개변수에는 초깃값이 저장되었다.

 

함수 호출 시 '매개변수명=인수'와 같은 형태로 인수를 전달할 수 있다.

 

insert_user(name = '홍길동', age = '21')

홍길동

21

0100000000

 

return

return 명령어는 함수 호출 시 결괏값을 전달받아야 하는 경우에 사용한다.

return은 함수 생성 시 필수적으로 사용해야 하는 명령어가 아니다.

 

total_object = {'cola':15}

def add_object(name, count):
    total_object[name] += count
    return total_object[name]
    
result = add_object('cola', 10)
print(result)

25

 

add_object 함수를 호출하면 total_object딕셔너리에 있는

'cola'key의 value에 count 값이 더해져서 저장되고 그 값이 리턴된다.

리턴된 값은 result 변수에 저장된다.

 

return으로 전달할 수 있는 데이터는 하나만 보낼 수 있다.

여러 개의 데이터를 전달하고 싶을 때는 리스트, 튜플, 딕셔너리 등의 자료형을 사용하여 보낼 수 있다.

 

 

지역변수와 전역변수

 

변수를 생성하면 변수의 유효 범위(Variable Scope)가 있다.

파이썬에서 함수 안에서 선언되는 변수를 지역 변수(Local Varibable)라고 한다.

지역변수의 특징은 함수 밖을 벗어나면 사용할 수 없다는 것이다.

 

def sale_price(price):
    result = price * 0.9
    return result
    
print(result)

25

 

sale_per = 0.8
sale_price = 0

def get_sale_price(price):
    global sale_per
    global sale_price
    sale_price = price*sale_per
    
get_sale_price(1000)
print(sale_price)

800.0

 

lambda

lambda(람다)는 함수를 한 줄로 제작할 때 사용하는 명령어이다. 간단한 함수를 제작할 때 유용하다.

 

sale_price = lambda price, sale_per : price * sale_per
result = sale_price(1000, 0.9)
print(result)

900.0