함수
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]
'코딩 테스트 준비 > Python 이론' 카테고리의 다른 글
파이썬 이론(입출력/파일 읽고쓰기) (0) | 2023.03.01 |
---|---|
파이썬 이론(반복문) (0) | 2023.02.25 |
파이썬 이론(조건문) (0) | 2023.02.25 |
파이썬 이론(변수) (0) | 2023.02.25 |
파이썬 이론(자료 구조 형) (0) | 2023.02.24 |
댓글