728x90
<함수 사용>
- 함수: 특정 용도의 코드를 한곳에 모아놓은 것
- 처음에 한번만 작성해 놓으면 나중에 필요할 때 계속 불러 쓸 수 있음
- 장점: 코드의 용도 구분 가능 / 코드 재사용 가능 / 실수 감소
- 형식
def 함수이름():
코드 내용
# 함수 선언 // 함수를 먼저 선언해야 호출 가능
>> 함수 선언이 뒤에 오면 에러 발생
>>> def hello():
print('Hello world!')
# 함수 호출(사용)
>>> hello()
Hello world!
<매개변수(파라미터), 인자(아규먼트)>
- 매개변수(parameter): 함수 안에서의 정의 및 사용에 나열되어 있는 변수 (선언 시 사용)
- 인자(argument): 함수를 호출할 때 전달되는 실제 값을 의미 (호출 시 사용)
- 매개변수가 있는 함수는 함수 호출 시, 꼭 인자를 지정해야 함
>>> def add(a,b): // a, b: 매개변수
print(a + b) // a + b: 매개변수
>>> add(10, 20) // 10, 20: 인자
30
>>> a, b = 10, 20
>>> add(a, b)
30
<함수 종료, 결과 반환 return>
** 결과를 돌려주는 함수 return
>>> def add(a, b):
return a + b
>>> x = add(10, 20)
>>> print(x)
** return: 함수가 호출될 때 생성된 출력 또는 결과
함수를 종료 시켜주는 역할을 수행
** 여러 개의 결과를 돌려주는 함수 return
>>> def add_sub(a, b):
return a + b, a - b
>>> x = add_sub(10, 20)
>>> print(type(x), x, x[0], x[1])
// x[0]는 함수 결과의 첫번째, x[1]는 함수 결과의 두번째 >> x= 30, -10
<class 'tuple'> (30, -10) 30 -10
>>> def mul(a, b):
c = a * b
return c
>>> def add(a, b):
c = a + b
**print(c) >> 30**
d = mul(a, b) mul (10, 20) > 10 * 20 = 200 >> **d = 200**
print(d) **>> 200**
>>> x = 10
>>> y = 20
>>> add(x, y)
30
200
<함수에서 파라미터 전달>
>>> print(10, 20, 30, 40, 50, 60, 70)
>>> def print_t(a, b, c):
print(a, end=' ')
print(b, end=' ')
print(c, end=' ')
>>> print_t(10, 20, 30)
10, 20, 30
>>> x = [10, 20, 30]
>>> print_t(*x) // *x = x의 요소를 불러와라
10 20 30
>>> print_t(x)
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
print_t(x)
TypeError: print_t() missing 2 required positional arguments: 'b' and 'c' >> 오류 발생
>>> print_t(*[1, 2, 3])
1 2 3
>> 언패킹 작용으로 파라미터 a, b, c로 분해돼서 전달
*: 괄호 안에 있던 데이터들을 풀어 각각으로 만드는 언패킹 역할
<*arg>
- *args: 가변 인자를 처리하는 표현으로 들어오는 인자의 개수를 모른다거나, 그 어떤 인자라도 모두 받아서 처리를 해야 할 때 주로 사용 위치에 따라 정해지는 인자
>>> def print_member(*args):
for i, arg in enumerate(args): // enumerate(): 인덱스 기준으로 순서 부여
print(i)
print(arg, end=' ')
>>> print_member('a')
0
a
>>> print_member('a', 'b', 'c')
0
a 1
b 2
c
>>> print_member('a', 'b', 'c', 'd', 'e', 'f')
0
a 1
b 2
c 3
d 4
e 5
f
>>> y = ['a', 'b', 'c', 'd', 'e', 'f']
>>> print_member(y)
0
['a', 'b', 'c', 'd', 'e', 'f']
>> []를 통째로 넘겼음 (언패킹 안 함)
>>> print_member(*y)
0
a 1
b 2
c 3
d 4
e 5
f
>> [] 안에 있는 요소를 하나씩 넘겼음 (언패킹 시행)
>>> def add(a, b, *args): // 기본형 a와 b를 먼저 써야 함
print(a + b)
for arg in args:
print(args, end=' ')
>>> def personal_info(name, age, address, phone):
print('이름:', name)
print('나이:', age)
print('주소:', address)
print('핸드폰:', phone)
>>> personal_info('홍길동', '30', '서울', '010-1234-1234')
이름: 홍길동
나이: 30
주소: 서울
핸드폰: 010-1234-1234
>>> def personal_info(*args):
for i, val in enumerate(args):
if i == 0:
print('이름:', val) // 값: val
elif i == 1:
print('나이:', val)
elif i == 2:
print('주소:', val)
else:
print('핸드폰:', val)
>>> personal_info('홍길동', '30', '서울', '010-1234-1234')
이름: 홍길동
나이: 30
주소: 서울
핸드폰: 010-1234-1234
>>> def personal_info(name='홍길동', age= 26, address='서울', phone='010-1234-1234'):
print('이름:', name)
print('나이:', age)
print('주소:', address)
print('핸드폰:', phone) >> 항상 고정적으로 나오는 값을 미리 지정
>>> personal_info('김길동')
이름: 김길동
나이: 26
주소: 서울
핸드폰: 010-1234-1234
>>> y = {'name':'홍길동', 'age': 20, 'addess': '서울', 'phone': '010-1234-1234'}
>>> personal_info(*y)
이름: name
나이: age
주소: addess
핸드폰: phone
>> 언패킹을 한 번만 해서 키가 넘어 감
>>> personal_info(**y)
이름: 홍길동
나이: 20
주소: 서울
핸드폰: 010-1234-1234
<**kwargs>
- **kwargs: 딕셔너리 형태로 함수를 호출
>>> def abb(**kwargs):
print(type(kwargs))
print(kwargs.items()) // 키와 값 모두 가져오기
print(kwargs.keys()) // 키만 가져오기
print(kwargs.values()) // 값만 가져오기
>>> abb(**{'a': 1, 'b':2, 'c':3})
<class 'dict'> // **kwargs는 딕셔너리 타입
dict_items([('a', 1), ('b', 2), ('c', 3)])
dict_keys(['a', 'b', 'c'])
dict_values([1, 2, 3])
>>> abb(name='홍길동', age=26)
<class 'dict'>
dict_items([('name', '홍길동'), ('age', 26)])
dict_keys(['name', 'age'])
dict_values(['홍길동', 26])
<변수의 범위>
- 전역범수: 함수 밖에서 만들어진 변수
>>> x = 10 // 전역변수
>>> def foo():
print(x)
>>> foo()
>>> print(x)
10
10
- 지역변수(로컬변수): 함수 안에서 만들어진 변수
>>> def bar():
x = 20 // 지역변수
print(x)
>>> bar()
20
<전역변수 가져오기> global
>>> x = 10
>>> def foo():
global x // 전역변수를 함수에서 사용하겠다고 선언
x = 20 // 전역변수 x에 값을 대입
print(x) // 전역변수 x를 출력
>>> foo()
>>> print(x)
20
20
'프로그래밍 언어 > Python' 카테고리의 다른 글
파이썬 Python 실습 :: 기본적인 파일 사용 정리 함수 (0) | 2024.01.17 |
---|---|
파이썬 Python 실습 :: 클래스, 인스턴스 (0) | 2024.01.12 |
파이썬 Python 실습 :: 기본적인 파일 사용 정리 함수 (0) | 2024.01.10 |
파이썬 Python 실습 :: 딕셔너리 실습 (키와 값) (1) | 2024.01.09 |
파이썬 Python 실습 :: 문자열 심화 (리스트 요소 교체, 문자열 찾기, 서식 지정자) (1) | 2024.01.08 |