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