🔥 함수 구조
🔥 다양한 입력값(인수) 받기
🔥 함수의 결과값
🔥 매개변수 default 설정
🔥 함수에서 선언한 변수
🔥 Lamda
✍🏻 python
# 함수 기본 구조1 : 일반적인 함수 def add(a,b): # a,b는 매개변수 return a + b result1 = add(2,8) # 2,8은 인수 print(result1) # 10 x = 10 y = 20 result2 = add(x,y) # x,y값은 인수 print(result2) # 30
# 함수 기본 구조2 : 입력값이 없는 함수 def say(): return 'Hi' print(say()) #Hi
# 함수 기본 구조3 : 결과값이 없는 함수 # 결과값이 있는 함수를 만들려면 무조건 return으로 받아야 함 def add2(a,b): print("%d, %d의 합은 %d입니다." %(a,b,a+b)) a = add2(3,4) # 3과 4의 합은 7입니다. print(a) # none : add(3,4)는 결과값이 없음 출력했을 때 : none
# 함수 기본 구조4 : 압력값도 결과값도 없는 함수 def say1(): print("Hi") say1() # Hi
# 지역변수 vs 전역변수 이해1 def sum(a,b): print(a) return a + b a = 1 print(sum(2,3)) print(a) # 2 -> 함수안에 지역변수 출력 : print(a) # 5 -> 함수의 결과값 출력 # 1 -> 전역변수 a 출력 : print(a)
# 지역변수 vs 전역변수 이해2 def sum(a,b): print(a) return a + b a = 1 print(sum(a,3)) print(a) # 1 -> 함수안에 지역변수 출력 : print(a) -> 전역변수 a가 함수안에 들어가서 출력됨 # 4 -> 함수의 결과값 출력(전역변수 a=1이 함수 안으로 들어감/ 1+4 # 1 -> 전역변수 a 출력 : print(a)
✍🏻 python
# *agrs를 매개변수를 활용1 def add_many(*args): result = 0 for i in args: result = result + i return result reuslt1 = add_many(1,2) reuslt2 = add_many(1,2,3) reuslt3 = add_many(1,2,3,4) reuslt4 = add_many(1,2,3,4,5) print(reuslt1) # 3 print(reuslt2) # 6 print(reuslt3) # 10 print(reuslt4) # 15
# *agrs를 매개변수를 활용2 def add_mul(choice, *args): if choice == "add": result = 0 for i in args: result = result + i elif choice == "mul": result = 1 for i in args: result = result * i return result result = add_mul('add', 1,2,3,4,5) print(result) # 15 result = add_mul('mul', 1,2,3,4,5) print(result) # 120 # *agrs를 매개변수를 활용1 def add_many(*args): result = 0 for i in args: result = result + i return result reuslt1 = add_many(1,2) reuslt2 = add_many(1,2,3) reuslt3 = add_many(1,2,3,4) reuslt4 = add_many(1,2,3,4,5) print(reuslt1) # 3 print(reuslt2) # 6 print(reuslt3) # 10 print(reuslt4) # 15
# *agrs를 매개변수를 활용2 def add_mul(choice, *args): if choice == "add": result = 0 for i in args: result = result + i elif choice == "mul": result = 1 for i in args: result = result * i return result result = add_mul('add', 1,2,3,4,5) print(result) # 15 result = add_mul('mul', 1,2,3,4,5) print(result) # 120
# 키워드 파라미터 **kwargs def print_kwargs(**kwargs): # 매개변수는 딕셔너리가 되고 모든 key=value 형태로 딕셔너리에 저장 print(kwargs) print_kwargs(a=1) #{'a': 1} print_kwargs(name='foo', age=3) # {'age': 3, 'name': 'foo'}
✍🏻 python
# 예시1 : return은 1개, 기능 2개 -> 튜플로 돌려줌 def add_and_mul(a,b): return a+b, a*b result = add_and_mul(3,4) print(result) # (7,12) -> 튜플로 돌려줌
# 예시2 def calculate(a,b): return a+b, a-b, a*b, a/b result_all = calculate(10,2) print(result_all) # (12, 8, 20, 5.0)
# return값이 여러개 일 때 def add_and_mul(a,b): return a+b # 실행됨 return a*b # 실행되지 않음 result = add_and_mul(2, 3) print(result) # 5
# return의 다른 기능 : 빠져나가기 def say_nick(nick): if nick == "바보": return print("나의 별명은 %s 입니다." % nick) say_nick("바보") # 결과값도 없고, retur을 만나 함수를 즉시 빠져나옴 say_nick('야호') # 결과값은 없지만, 문자열은 출력함 -> 나의 별명은 야호입니다.
✍🏻 python
# 매개변수 초기값(기본값,default) 미리 세팅 def say_myself(name, old, man=True): # man = true를 기본값으로 설정해서, 인수로 들어오지 않으면 기본값 사용 print("나의 이름은 %s 입니다." % name) print("나이는 %d살입니다." % old) if man: print("남자입니다.") else: print("여자입니다.") say_myself("jewon", 20) # 세번째 인수로 man=True이 default로 처리되어 출력됨 say_myself("jewon", 20, True) # 위 출력값 say_myself("jewon", True, 20) # 맵핑을 제대로하지 않으면, True는 숫자로 1로 바껴 1살로 나오고, 숫자 27은 True가되어 남자입니다가 출력됨
✍🏻 python
a = 1 def vartest(a): a = a +1 result1 = vartest(a) print(result1) # None => a = a + 1은 함수 내부에서 작동하지만 함수 밖으로 반환되지 않음. result2 = vartest(1) print(result2) # None print(a) # 1 -> 전역 변수 a가 호출된 결과
# 함수 안에서 선언된 변수를 함수 밖에서 호출하는 방법 : return b = 1 def vartest(b): b = b +1 # 함수 안에서 선언된 b return b # 함수 밖에서도 이용할 수 있도록 return b = vartest(b) print(b) # 2
✍🏻 python
# 일반적인 함수 선언 : def def add(a, b): return a+b result = add(3, 4) print(result)
# Lambda 함수 선언 : 위의 함수와 같음 # 함수명 = lambda (a,b): a+b # 1)def삭제, 2)함수명 앞으로 빼주기, 3) = lambda, 4) 파라미터, 5) body(return 생략) => 함수명 = lambda (파라미터): 함수 body add = lambda a, b: a+b result = add(3, 4) print(result) # 7