
9/10 2, 3, 4, 5, 6세션
return 으로 반환> def hello():
> return '안녕하세요? 반갑습니다.'
> a = hello()
> print(a)
위치 인수라고 함> def hello(name):
> print(f'{name}님 안녕하세요? 반갑습니다!')
# 함수 사용
> hello('홍길동')
매개변수 = 값 형태로 기본값 지정 가능# 함수 만들기
> def hello(name='여러분'):
> print(f'{name}님 안녕하세요? 반갑습니다!')
# 함수 사용
> hello() # --> 여러분이 들어감
매개변수=값 형태로 매개변수 이름을 지정하면 전달되는 순서를 바꿀 수 있음> def hello(*args):
> for who in args:
> print(f'{who}님 안녕하세요? 반갑습니다!')
# 함수 사용
> hello('홍길동', '일지매', '강우동')
홍길동님 안녕하세요? 반갑습니다!
일지매님 안녕하세요? 반갑습니다!
강우동님 안녕하세요? 반갑습니다!
만약 리스트 형태로 넣으면? 값이 하나만 들어간 것이 된다!
> a_list = ['홍길동', '일지매', '강우동']
> hello(a_list)
['홍길동', '일지매', '강우동']님 안녕하세요? 반갑습니다!
대신에 *a_list 를 넣으면 원하는 결과가 나온다.
TIP!
*는 하나씩 자른다는 의미. 낱개씩 처리하라!hello(*a) == hello(a[0], a[1], a[2] ...)
** 를 사용하면 딕셔너리 값을 하나씩 전달한다는 의미이다.items() 메서드와 함께 사용한다.> def hello2(**args):
> for who, age in args.items():
> print(f'{who}의 나이는 {age}살 입니다.')
# 함수 사용
> b_dic = {'홍길동' : 10, '일지매' : 30, '강우동' : 50}
> hello2(**b_dic)
홍길동의 나이는 10살 입니다.
일지매의 나이는 30살 입니다.
강우동의 나이는 50살 입니다.
가능
# 1. 위치 인수를 가변 인수 앞에 두기
def hello(title, *args):
hello('선생님', '홍길동', '일지매', '강우동')
# 2. 가변 인수를 앞에, 키워드 함수를 뒤에 두기
def hello(*args, title):
hello('홍길동', '일지매', '강우동', title='선생님')
불가능
# 1. 키워드 인수를 가변 인수 앞에 두기
> def hello(title, *args):
> hello(title='선생님', '홍길동', '일지매', '강우동')
# 2. 가변 인수 뒤에 키워드 없이 위치 인수 두기
> def hello(*args, title):
> hello('홍길동', '일지매', '강우동', '선생님')
return 문 사용. 반환과 동시에 함수가 종료.return 아래에 있는 라인은 실행되지 않음.None 출력튜플로 반환)> def calculate2(a, b):
> summ = a + b
> mult = a * b
> return summ, mult
# 함수 사용
> r1, r2 = calculate2(10, 5)
> print(r1)
> print(r2)
15
50
- L : Local - 함수 안에서 선언된 함수
- E : Enclosing - 함수가 함수를 호출한 경우, 안쪽 함수 입장에서 밖에 함수가 선언한 변수
- G : Global - 함수 밖에서 선언한 전역변수
- B : Built-in - 파이썬이 기본적으로 제공하는 함수
> a = list(range(1, 11))
> def test():
a[0] = 10
a.append(11)
print(f'안쪽 a : {a}')
> test()
> print(f'바깥쪽 a : {a}')
안쪽 a : [10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
바깥쪽 a : [10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
> a = list(range(1, 11))
> def test(x):
x[0] = 10
x.append(11)
print(f'안쪽 a : {a}')
> test(a)
> print(f'바깥쪽 a : {a}')
안쪽 a : [10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
바깥쪽 a : [10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
> a = list(range(1, 11))
> def test():
a = [1, 2, 3] # 지역 변수 선언
a[0] = 10
a.append(11)
print(f'안쪽 a : {a}')
> test()
> print(f'바깥쪽 a : {a}')
안쪽 a : [10, 2, 3, 11]
바깥쪽 a : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
eval() 함수> def calculate1(n1, n2, s):
return eval(f'{n1} {s} {n2}')
> calculate1(11, 2 , '*')
22