본문 바로가기
코딩 테스트 준비/Python 이론

파이썬 이론(함수)

by gugigugi92 2023. 3. 1.

함수

       Python에서 함수(Function)는 재사용 가능한 코드 블록으로이며, 하나 이상의 입력값(인자)을 받아서

      하나 이상의 결과값을 반환하는 기능을 수행한다

      함수를 사용하면 코드의 재사용성과 유지보수성이 높아지며  프로그램의 구조화와 모듈화를 향상시킬 수 있다.

          F(X) = 2X+3

 

파이썬 함수의 구조

   def 함수명(매개변수):

          <수행할 문장1>

          <수행할 문장2>

   .....

   return 리턴 값

   

# 함수 정의
def sum(a,b):
    result = a+b
    return result

#함수 호출
print(sum(1,2))

print()
#입력값이 없어도 출력값만 있을수 있다
def say():
    return 'Hi'
print(say())

print()

# 출력(return)이 없어도 사용 가능하다
def sum(a,b):
    print("%d, %d의 합은 %d입니다"% (a,b,a+b))

#함수 호출
sum(1,2)
# print 는 그대로 출력하고 return 값이 없기때문에 none 을 추가로 출력
print(sum(1,2))

출력결과


# append = 리턴 값이 없는 리스트에 추가  
myList = [1,2,3]
print(myList.append(4)) # none

# pop = 리턴 값이 있는 리스트 삭제
myList=[1,2,3]
print(myList.pop()) #삭제한 값 3

#입력도 출력도 없는 함수
def say():
    print('hi')
print(say()) #none

출력결과


# 여러 개의 입력값 *args  n개의 인자를 한번에 받을 수 있다
def sum_many(*args):
    sum =0
    for i in args:
        sum = sum+i
    return sum #입력받은 값 전부 +            
print(sum_many(1,2,3,4)) #10


# **kwargs : 딕셔너리형태로 입력값 받음
def print_kwargs(**kwargs):
    for k in kwargs.keys(): # 입력한 딕셔너리
        if(k== "name"): # 딕셔너리 key중에 name이 있으면
            return "당신의 이름은:"+kwargs[k]; #받은 key의 value를 출력하겠다
print(print_kwargs(name="python"))

출력결과


# #함수의 결과값은 언제나 하나다
def sum_and_mul(a,b):
    return a+b, a*b, a-b #리턴값이 튜플형태로 묶여서 '하나'의 '값'으로 나온다
print(sum_and_mul(1,2))

출력결과


# #결과값을 골라서 사용
def sum_and_mul(a,b):
    return a+b, a*b, a-b 
print(sum_and_mul(1,2)[1],sum_and_mul(1,2)[2])

출력결과



#기본 값 설정 : 순서를 맞추거나 순서가 틀리면 입력값을 매개변수에 정확히 매칭시켜야한다  
def say_myself(name, old, man=True): # true 는 기본값으로 들어간다
    print("나의 이름은 %s 입니다."% name)
    print("나이는 %d살 입니다."%old)
    if man:
        print("남자입니다")
    else:
        print("여자입니다.")

say_myself("송태섭",20)
print()
say_myself("이한나",21,False) #else 문 출력

출력결과


#함수안의 변수의 효력범위 vartest() = 함수내의 변수를 지역변수화, 함수내에서만 정의한 값을 사용할수 있다
a=1
def vartest(a):
    a=a+1
    return a

print(a) #1 함수가 지역변수여서 적용이 안된 모습
a = vartest(a) # return 값을 a에 재 할당하면 함수내에서 정의한 값을 사용가능하다
print(a) #2
print(vartest(a))#2가 다시 vartest함수에 들어가면서 결과값 3

print()

#global = 전역변수로 사용
a = 1
def vartest():
    global a #함수내의 결과를 외부에 영향끼친다
    a= a+1
  
vartest()
print(a) #2

출력결과


#람다 식 : 축약하여 함수 이름을 정할 필요가 없다.
def add(a,b):
        return a+b
#위 코드를 아래 람다식으로 대체
add = lambda a, b: a+b 
print(add(1,2))

myList = [lambda a, b: a+b, lambda a, b: a*b]#람다식 정의
print(myList[0](1,2),myList[1](3,4))#람다식의 인덱스번호로 호출 가능

출력결과


#immutable : 변할 수 없는 자료형
# (정수,실수,문자열,튜플)
a =1 # 전역변수는 지역변수의 영향을받지않음
def vartest(a): #지역변수
    a = a+1

vartest(a)
print(a)#1 

#mutable 변할 수 있는 자료형
#(리스트,딕셔너리,집합)
b=[1,2,3] #전역변수
def vartest2(b):
    b = b.append(4) # 같은 주소값을 가르키게되서 값은 같지만 전역변수b 와 함수내의 b는 다른 변수다
vartest2(b)
print(b) #[1,2,3,4]

 

댓글