함수

매일 공부(ML)·2021년 11월 4일
0

Python

목록 보기
1/38

함수

  1. 정의: 입력값을 넣었을 때 결과물이 나오도록 하는 것이다.

  2. 사용 이유:

    • 편리성( 같은 내용을 반복해서 똑같이 작성할 필요가 없음)

    • 가독성( 프로그램의 흐름을 보기 편함)

    • 오류 찾기 쉬움

  3. 구조

  • def: 함수를 만들 때 사용하는 예약어
  • 매개변수: 입력으로 전달되는 값을 받는 변수( f(x) = 2x+1일 때,x값)
    def add(a, b): # a,b는 매개변수
    	return a+b
       
 - 인수: 함수를 호출할 때 전달하는 입력값
 

print(add(3,4)) # 3,4는 인수

 -  return: 
 			
            - 함수의 결과값(반환값)을 돌려주는 명령어, 
 			
            - return이 두 개 이상일 경우 가장 첫번째가 쓰임.
            
            - 특별 상황을 만들면 함수를 즉시 빠지게 할 수 있다.

def say_nick(nick):
if nick == "바보":
return
print("나의 별명은 %s 입니다." % nick)

say_nick('야호') # 나의 별명은 야호입니다.
say_nick('바보')

 
 - print: 출력(우리 눈에 값으로 보여줌)
 

def 함수명(매개변수):

<수행할 문장1>
<수행할 문장2>

실제 활용

def add(a, b): # 덧셈 함수 정의, 변수는 a + b
return a + b # 결과 값은 a + b

a = 5

b = 4 

c = add(a,b)

print(c) # c =  9

4. 입력값과 결과값에 따른 함수의 종류


i) 일반적인 함수

: 입력값 과 결과값이 있다.

-> 결과값을 받을 변수 = 함수이름(입력인수1, 입력인수2)

def add(a, b):
result = a + b
return result
a = add(3, 4)
print(a) # 7

ii) 입력값이 없는 함수

: 입력값 X , 결과값 O

-> 결과값을 받을 변수 =  함수이름()

def say():
return 'Hi'
a = say()
print(a) # Hi



iii) 결과값이 없는 함수

: 입력값 O, 결과값 X(return이 없다)

-> 함수이름(입력인수1, 입력인수 2)

def add(a, b):
print("%d, %d의 합은 %d입니다." % (a, b, a+b))

add(3, 4) # 3,4의 합은7입니다.


iv) 입력값 과 결과값이 없는 함수

: 입력값과 결과값 X

->함수이름()

def say():
print('Hi')
say() # Hi


5. 매개변수 지정하여 호출하기

- 매개변수를 지정하면 인수의 순서와 상관없이 사용을 할 수 있다. 왜냐하면, 그저 할당개념이라고 생각하면 되기 때문이다.

def add(a, b):
return a+b

result = add(a=3,b=7)
print(result) # 10

results = add(b=3,a=5)
print(results) # 8


6. 입력값이 몇 개인지 모를 때의 해결책

- 함수 형태에서 괄호 안이 일반적인 매개변수가 아닌 * 매개변수 로바뀜.

def add_many(*args):
result = 0
for i in args:
result = result + i
return result

예시

result = add_many(1,2,3)
print(result) # 6

result = add_many(1,2,3,4,5,6,7,8,9,10)
print(result) # 55


- 선택권 부여

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


7. 키워드 파라미터 kwargs

- 매개변수 출력, 키 출력(모두 딕셔너리로 만들어져서 출력)

def print_kwargs(**kwargs):
print(kwargs)

print_kwargs(a=1) # {'a': 1}

print_kwargs(name='foo', age=3) #{'age': 3, 'name': 'foo'}


8. 함수의 결과값은 언제나 하나이다.

def add_and_mul(a,b):
return a+b, a*b

result = add_and_mul(3,4)

result = (7, 12)

result1, result2 = add_and_mul(3, 4)

result1, result2 = (7, 12)


9. 매개 변수에 초깃값 미리 설정하기

- 함수의 인수를 전달하는 방법( 매개변수에 초깃값을 미리 설정)

- man = True: 매개변수에 미리값을 넣어주는 것( 매개변수 초깃값 설정)[매개변수에 들어갈 값이 항상 변하는 것이 아니어야함]

- 초기값 설정 시 항상 맨 뒤에 놓아야 한다.

def say_myself(name, old, man=True): # 3개의 매개변수를 받아서 마지막 인수인 성별로 true or false 출력

print("나의 이름은 %s 입니다." % name) 
print("나이는 %d살입니다." % old) 
if man: 
    print("남자입니다.")
else: 
    print("여자입니다.")
    

say_myself("박응용", 27)
say_myself("박응용", 27, True)

위의 결과가 같다

#나의 이름은 박응선입니다.
#나이는 27살입니다.
#여자입니다.

10. 함수 안에서 선언한 변수의 효력 범위

- 함수 안에서 선언한 매개 변수는 함수 안에서만 사용될 뿐 밖에는 영향을 주지 않는다.

def vartest(a):
a = a + 1

vartest(3) # 4
print(a) # Error

11. 함수 안에서 함수 밖의 변수를 변경하는 방법

1. return 사용하기

- a = vartest(a)라고 대입하면 a가 vartest함수의 결과값으로 바뀐다.

- vartest(a)와 함수 안의 a 매개변수는 함수 밖의 a와 다른 것이다.!!

a = 1
def vartest(a):
a = a +1
return a #2

a = vartest(a) # a = vartest(1) =2
print(a) # 2


2. global 명령어 사용하기

a = 1
def vartest():
global a # 함수 안에서 함수 밖의 a 변수를 직접 사용, 종속적 함수를 만들 수 있기에 권유를 하진 않음
a = a+1

vartest()
print(a)


12. lambda

- 정의: 함수를 한 줄로 간결하게 만든다

- 경우:

	- def를 사용해야할 정도로 복잡하지 않음
    
    - def를 사용할 수 없는 곳에 쓰임
    
- 모양: lambda 매개변수1, 매개변수2 ...: 매개변수를 이용한 표현식

- 예시

add = lambda a, b: a+b
result = add(3, 4)
print(result) # 7


- 비교

def add(a, b):
return a+b

result = add(3, 4)
print(result) # 7

profile
성장을 도울 아카이빙 블로그

0개의 댓글